Comparacion de campos!!! Urgente.

javier
04 de Enero del 2004
Tengo que desarrollar una interfaz que pueda revisar que los campos tecleados por el usuario cumplan con ciertas reglas de negocio, por ejemplo:

Tengo un campo denominado Numero de A, el usuario teclea el numero y debe de cumplir con ciertas reglas, como por ejemplo este campo debe contener 10 digitos.

Como le hago para que el si el campo es de 12 pues despliegue un mensaje de error???, y si cumple con la condicion despliegue un mensaje que indique que el campo es valido.

Mi pregunta no es como desplegar el mensaje sino como le hago para que compare el campo con las reglas establecidas???

Esto es URGENTE!!!! MI TRABAJO DEPENDE DE ELLO!!!

GRACIAS =)

rickirey
04 de Enero del 2004
bueno espero sea el caso:

puedes poner sentencias en el evento INTERACTIVECHANGE del objeto
este evento se ejecuta cada vez que el usuario presiona una tecla ya que el objeto cambia de estado interactivamente.

como ejemplo:
if len(this.value))>10
messagebox("solo ingrese 10 digitos")
return (0)
endif

o sino mas facil
usa la validacion de campos a nivel de base de datos
ve al campor por decir "numerosA" entocnes en donde dice regla de negocio pones (len(numerosA)<=10) y en mensaje "ingrese como maximo 10 digitos"
espero te sirva sino agregame a tus contactos y talves podamos solucionarlo juntos conociendo los detalles del sistema que estas desarrollando.



javier
04 de Enero del 2004
Segui tu consejo e hice un boton con el siguiente codigo:

if len(thisform.Text1.value)>10
messagebox("El campo es mayor a 10 digitos")
return(0)
endif

sin embargo no funciona ya que con cualquier digito que ingrese despliega el mensaje, puedes decirme donde esta mi error??

Gracias


Raul
04 de Enero del 2004
Hola Javier:

"el día 8 de diciembre de 2003 escribiste:
Segui tu consejo e hice un boton con el siguiente codigo:

if len(thisform.Text1.value)>10
messagebox("El campo es mayor a 10 digitos")
return(0)
endif

sin embargo no funciona ya que con cualquier digito que ingrese despliega el mensaje, puedes decirme donde esta mi error??"

Creo que si antecedes estas lineas con esto te funcionara hasta que el usuario presione una tecla, or decir ENTER:

if lastkey()=13
if len(thisform.Text1.value)>10
messagebox("El campo es mayor a 10 digitos")
return(0)
endif
endif

Pon esas lineas en el evento lostfocus del campo y el campo debera tener una longitud que te permita presionar enter luego de teclear los 10 digitos.

Cualquier cosa me avisas.

Saludos
Raul Urquilla

waldesro
04 de Enero del 2004
Creo que tu error esta en que no utilzar el valor ascii de la tecla.
Loque puedes hacer es poner una condicion en el evento keypress o dar una mascara de entrada al texbox ejemplo
thisform.txtcedula.inputmask = '9999999999'
esto valida que solo se digiten numeros
y des pues pones en el evento VALID
if len(STR(this.value)) > 10 then
MESSAGEBOX('ERROR')
RETURN 0
else
RETURN 1
ENDIF

Espero ayudarte

SUPERTIBUX
04 de Enero del 2004
BUENO CREO Q TU LO QUE QUIERES HACER ES QUE NO TE VALIDE EL CAMPO SI INSERTAS UN NUMERO MAYOR O MENOR DE DIGITOS, LO QUE PUEDES HACER ES

como ejemplo:
IF LEN(ALLTRIM(NRO))>10
messagebox("solo ingrese 10 digitos")
return (0)
endif


CREO Q ESO ES LO QUE QUIERES, AUNQUE NO ESTOY SEGURO DE CUAL ES TU PROBLEMA EXACTAMENTE

SAM
04 de Enero del 2004
a=len(alltrim(thisform.text1.value))
if a>=10
messagebox("GHHHH")+
endif

miguel
04 de Enero del 2004
para validar la regla de negocio que vos indicas, se me ocurren al menos dos posibilidades, muy parecidas.
Una es fijar la propiedad inputmask, donde determinas que lo unico que puede tipear el usuario son digitos (tipeas diez nueves 999999999).
Si queres validar que digiten los diez dígitos, colocas en el metodo VALID del cuadro de texto algo asi como

IF LEN(ALLTRIM(STR(THIS.VALUE)))<10 THEN
* tomo el valor del cuadro de texto, lo convierto a hilera de
* caracteres, elimino blancos que pudiera haber, calculo su
* longitud y veo que no sea menor que 10, la mascara que
* indique como propiedad, evita que haya algo distinto de
* dígitos o que sean mayo que 10
=MESSAGEBOX(...mensaje de error apropiado...)
RETURN 0
ELSE
=MESSAGEBOX(...felicitaciones, ud. lo ha hecho bien!!..)
ENDIF

SUGERENCIA: A los usuarios en un principio les puede agradar que lo feliciten por hacer las cosas bien, pero despues de un tiempo, tener que contestar al mensaje de felicitación se les pone pesado.
A los usuarios, al equivocarse, cuando mas discreto sea el aviso de error, mejor, un simple beep, indicando que el campo esta lleno es suficiente.
Hace mas de 20 años que codifico programas interactivos, y al final uno aprende.

javier
04 de Enero del 2004
Miguel: te agradezco tu ayuda, sin embargo esto que tu me recomiendas yo ya lo habia hecho, y me manda un error poco comun, espero puedas ayudarme nuevamente. El error que me envia es el siguiente:

Function argument value, type, or count is invalid

Gracias por tu ayuda.

P.D. si alguien sabe como resolver esto, les pido su ayuda!!!!