Clipper/FiveWin - Clausula VALID en FWH

 
Vista:

Clausula VALID en FWH

Publicado por tionolo (30 intervenciones) el 14/11/2009 05:11:10
Uso FWH con xEdit y Pelles C (Poide)
Necesito verificar el RUT (Numero de Identidad en Chile,que corresponde a un algoritmo)
Este se escribe como carácter (NO número)
Al validarlo ,no me detiene el ingreso , pasa al siguiente Get

DEFINE DIALOG oDlg RESOURCE "Ing_Cliente"
REDEFINE GET o250 VAR vRazSoc ID 250 OF oDlg PICTURE"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"

REDEFINE GET o251 VAR vRUT ID 251 OF oDlg Update PICT "@!" ;
VALID (Nro(vRut) , o251:Refresh(), .T.) // ==>>

REDEFINE GET o252 VAR vDir ID 252 OF oDlg PICTURE"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
REDEFINE GET o255 VAR vEnc ID 255 OF oDlg PICTURE"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
REDEFINE GET o256 VAR vFon ID 256 OF oDlg PICTURE"!!!!!!!!!!"
REDEFINE GET o257 VAR vCel ID 257 OF oDlg PICTURE"!!!!!!!!!!"
REDEFINE GET o258 VAR vNotas ID 258 OF oDlg MEMO
REDEFINE BUTTON ID 270 OF oDlg ACTION (Graba:=.T. , oDlg:End())
REDEFINE BUTTON ID 271 OF oDlg ACTION (Graba:=.F. , oDlg:End())
ACTIVATE DIALOG oDlg CENTERED

//=>>
Function Nro(vCI)

Local Num,Numero
local largo,digito,multi,divi,contenedor,suma,i
Local oRet:= .f.

if val(vCI) < 999999
MSGALERT("HA DIGITADO UNA OPCION ERRADA.................VERIFIQUE")
oRet:= .F. //=>>> aqui debiera detener
ELSE
oRet := .T.
endif

Return oRet

***Agradesco la ayuda ya que he buscado por muchos lados y NADA.
Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Clausula VALID en FWH

Publicado por Felipe (2 intervenciones) el 14/11/2009 12:17:30
Creo que te sobra la .T. final. Quedaría así:
REDEFINE GET o251 VAR vRUT ID 251 OF oDlg Update PICT "@!" ;
VALID (Nro(vRut) , o251:Refresh())

Saludos,
Felipe
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Clausula VALID en FWH

Publicado por Gabriel Pascual (913 intervenciones) el 16/11/2009 03:14:07
tienes 2 parametros de mas en tu expresión VALID:

VALID (Nro(vRut) , o251:Refresh(), .T.)

Un valid es un realidad un bloque de código, y devuelve el ultimo valor de la expresión, en tu caso, tu valid SIEMPRE devuelve verdadero, y te continua la carga de GETs, aun si el RUT no es válido, la secuencia que sigue la expresión que tienes en tu valid es esta:

Ejecuta la funcion Nvo(vRut), si esta función devuelve falso o verdadero da exactamente igual, porque la siguiente instruccion que se evalua es un o251:Refresh() y el valor retornado por esta función (usualmente NIL) , suplanta al valor retornado por Nvo(vRut), y finalmente tienes un .T. que sobre escribe el valor retornado por las 2 expresiones anteriores, por lo tanto, tu expresion VALID siempre es verdadera.

No vale quitar unicamente el .T., porque aun el REFRESH devuelve un valor, en tu caso para que tu valid funcione, tienes que dejar unicamente:

VALID Nro(vRut)

o Bien hacer un IIF:

VALID IIF (Nro(vRut), (o251:Refresh(),.t.), .F.)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Clausula VALID en FWH

Publicado por tionolo (30 intervenciones) el 20/11/2009 18:41:26
Gracias Gabriel (una vez más)
funcionó perfectamente .
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar