Hola, soy nuevo en esto y quisiera saber como puedo validar una caja de texto en FOX; por ejemplo: que si no son caracteres numéricos (o sea ingreso letras y números) me dé un mensaje que "debe ingresar sólo números"... Bueno, si pueden poner ejemplos de código... Por ejemplo: en VB yo pondría if isnumeric(text1)=F
messagebox... Etc, etc... else hacer algo ..... Etc... Etc... end if Gracias
Respuesta de fcosapa
1
1
fcosapa, Programación en COBOL, RPG y PROGRESS sobre DB2 de Iseries,...
Pero te puedo dar una idea para salir del paso y que sirve para cualquier lenguaje y es el siguiente: X=0 FOR a=1 TO LEN(CAMPO) IF SUBSTR(CAMPO,a,1) < '0' OR SUBSTR(CAMPO,I,1) > '9' THEN X=1 ENDIF END IF X <> 0 THEN MSGBOX 'INTRODUZCA SOLO NUMEROS' Este método no necesita función especifica de función de control numérico, salvo la de longitud de variable y la de obtener dígito a dígito el contenido del campo.
Gracias por tu respuesta... probé el código y me abre siempre el messagebox, pohga números o letras... Te paso el código tal como lo escribí: X=0 I=LEN(thisform.text1.value) FOR a=1 TO I IF SUBSTR(thisform.text1.value,a,1) < "0" OR SUBSTR(thisform.text1.value,I,1) > "9" THEN X=1 ENDIF next IF X <> 0 messagebox("INTRODUZCA SOLO NUMEROS") thisform.text1.value="" return 0 Endif Si me podes dar una solución... Gracias Fco Santos.
Te contesto aquí también por si no te ha llegado la primera respuesta) Hola, En primer lugar disculpa por la palabra coger, creo que vara vosotros significa otra cosa, en españa significa tomar, asir, es decir, "coger con la mano la maleta que esta en el suelo", por ejemplo. En el IF, en el substring que compara el 9 has puesto I, cuando debe de ser A, es decir, SUBSTR(thisform.text1.value, A, 1) > '9'. No obstante ten encuenta lo siguiente: 1236 es totalmente numérico, pero si tiene un espacio al principio te lo invalidará 1.236 el punto no es numero, por lo que si te interesa tendrás que incluirlo en la pregunta, así como el separador de decimales. Cualquier carácter no comprendido entre 0 y 9 tendrás que controlarlo. Por ejemplo: if (substr(thisform.text1.value, a, 1) < '0' or substr(thisform.text1.value, a, 1) > '9') and substr(thisform.text1.value, a, 1) <> '.' then cualquier caracter que quieras que sea considerado numerico lo incluyes en la pregunta con la condicion AND como ves en el ejemplo que considera al punto numerico. La función SUBSTR es una función que obtiena una subcadena desde el carácter que se le indica en el segundo parámetro y cuantos caracteres indique el tercero. Según nuestro ejemplo, obtiene 1 carácter de la cadena thisform.text1 desde la posición que indica A. El formato es el siguiente: SUBSTR(cadena, nº que indica posición desde donde queremos coger, numero que indica cuantos caracteres queremos coger) Si te sigue funcionando mal, habría que ver si FOX tiene un código ASCII distinto al normal, aunque seria extraño.
Gracias Francisco... lo probaré y cualquier cosita te volveré a molestar... aunque con tu explicación excelente creo que lo podré resolver.. En cuanto a la palabra coger, se exactamente el significado que tiene tanto para Uds como para nosotros... pero... jajaja... acá se la usa peyorativamente para definir otra cosa! jajaja... Gracias y un abrazo... Fernando