Validar campos de texto en VF 6.0

villacr
19 de Febrero del 2003
Hola a todos...estoy aprendiendo VF por mi cuenta..ya que necesito hacer mi tesis en este lengueje y para esto necesito saber como puedo validar los cadros de texto en un formulario..es decir..tengo un form donde se capturan los datos del cliente ...tengo un boton para guardar la info capturada pero antes de que se guarde la info necesito que se valide que todos los campos esten llenos..para que los campos de mi tabla clientes no este alguno vacio...no se si me expliqué....si no me entienden..diganme y lo intento explicar de otra manera..... Gracias.

george
19 de Febrero del 2003
mira digamos que tiene un cuadro en el que deseas validar que este lleno y si no que lo regrese ahí mismo hasta que tenga datos.

if EMPTY(ThisForm.est)
MessageBox("Falta seleccionar un estado para poder pedir la Jurisdicción. Los resultados pueden ser inesperados.","Suave - 2003")
Thisform.txtest.Setfocus()
else
otra condicion
endif

if EMPTY(ThisForm.est)
esta linea verifica que no este limpio el campo...

Jorge del Rio

osvaldo
19 de Febrero del 2003
** tambien puedes hacer que cuando estas sobre un campo, no te deje salir del mismo hasta que le pongas valores... para esto utiliza el metodo: valid, del campo u escribe el siguiente codigo:

IF EMPTY(THIS.value)
WAIT WIND "El campo no puede estar en blanco...gracias..."
RETURN .F.
ELSE
RETURN .t.
ENDIF

esto hara que no puedas salir de aquellos campos que esten vacios. recuerda que tienes que seleccionar en el menu: herramientas, luego opciones, luego la pestaña ver, y ahi deshabilita la opcion que dice mensaje del sistema, para que se presente el mensaje tuyo, y no el del fox...

Jesus Rojas
19 de Febrero del 2003
Mira hay distintas formas de validar los campos, como dijo un colega puedes validar para que no pueda salir del campo hasta que este lleno ( En el evento valid) o al momento que haces click en el botón grabar antes de grabar los datos puedes verificar con un Método que deberías crear, te explico esto:

En el Formulario crea un nuevo método (Menu Formulario/Nuevo Método), en este caso le vamos a poner el nombre DatosCorrectos.

Ahora en el form haces doble click y buscas el método que has creado para colocar el código que va a ser el siguiente:

&& aqui empieza el codigo
lReturn = .t.
FOR nObjetos=1 TO ThisForm.ControlCount
cClase=ThisForm.Controls(nObjetos).baseclass
cObjeto=ThisForm.Controls(nObjetos).name
IF UPPER(cClase)="TEXTBOX"
IF EMPTY(ThisForm.&cObjeto..value)
ThisForm.&cObjeto..SetFocus
lReturn = .f.
EXIT
ENDIF
ENDIF
NEXT
RETURN lReturn

Y en el boton de guardar lo llamas asi:
IF ThisForm.DatosCorrectos()
'AQUI PONES TU CODIGO PARA GRABAR
ELSE
=MESSAGEBOX("Faltan algunos datos ...")
RETURN .F.
ENDIF

Ojalá te sirva, envíame un email si tienes alguna duda o comentario.

Jesus Rojas.

Ernesto Lopez
31 de Enero del 2015
Aqui tengo una aportacion muy buena...

En el Formulario crea un nuevo método igual le ponemos el nombre de DatosCorrectos, buscas el método y colocas el código siguiente:




&& Codigo por ISC Ernesto López Medina
&& México

c1PrimerObjeto=""
c2PrimerObjeto=""
ObjetosSinLlenar=0
lReturn = .T.
For nObjetos=1 To Thisform.ControlCount
cClase=Thisform.Controls(nObjetos).BaseClass
cObjeto=Thisform.Controls(nObjetos).Name
If cClase="Container"
For nObjetosContainer=1 To Thisform.Controls(nObjetos).ControlCount
c2Clase=Thisform.&cObjeto..Controls(nObjetosContainer).BaseClass
c2Objeto=Thisform.&cObjeto..Controls(nObjetosContainer).Name
campo=Upper(c2Clase)="TEXTBOX" .Or. Upper(c2Clase)="EDITBOX"
If campo .And. Empty(Thisform.&cObjeto..&c2Objeto..Value) .And. Thisform.&cObjeto..&c2Objeto..Comment="*"
ObjetosSinLlenar=ObjetosSinLlenar+1
If ObjetosSinLlenar=1
c1PrimerObjeto=cObjeto
c2PrimerObjeto=c2Objeto
Endif
Thisform.&cObjeto..&c2Objeto..BackColor= 12698111
Thisform.&cObjeto..&c2Objeto..FontBold=.T.
Else
If campo .And. .Not. Empty(Thisform.&cObjeto..&c2Objeto..Value) .And. Thisform.&cObjeto..&c2Objeto..Comment="*"
Thisform.&cObjeto..&c2Objeto..BackColor= 16777215
Thisform.&cObjeto..&c2Objeto..FontBold=.F.
Endif
Endif
Next
Endif
campo=Upper(cClase)="TEXTBOX" .Or. Upper(cClase)="EDITBOX"
If campo .And. Empty(Thisform.&cObjeto..Value) .And. Thisform.&cObjeto..Comment="*"
ObjetosSinLlenar=ObjetosSinLlenar+1
If ObjetosSinLlenar=1
c1PrimerObjeto=cObjeto
ENDIF
Thisform.&cObjeto..BackColor= 12698111
Thisform.&cObjeto..FontBold=.T.
Else
If campo .And. .NOT. Empty(Thisform.&cObjeto..Value) .And. Thisform.&cObjeto..Comment="*"
Thisform.&cObjeto..BackColor= 16777215
Thisform.&cObjeto..FontBold=.F.
Endif
Endif
Next
If ObjetosSinLlenar>0
lReturn=.F.
MESSAGEBOX("Hay "+ALLTRIM(STR(ObjetosSinLlenar))+" Campos Requeridos Vacios",0+64)
If Len(c2PrimerObjeto)>0
Thisform.&c1PrimerObjeto..&c2PrimerObjeto..SetFocus
Else
Thisform.&c1PrimerObjeto..SetFocus
ENDIF
Endif
Return lReturn

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&



IF ThisForm.DatosCorrectos()
& Aqui escribes el código para manipular esos campos ;)
ENDIF

Un saludo desde México.

Nota: no importa que esto fue hace 12 años, yo lo encontré porque buscaba lo mismo hoy en el 2015 y este código lo desarrolle en base al código que publico Jesús Rojas.