Hola a todos
A ver si me podeis ayudar a resolver una pega que me da el GET con la opcion VALID, que aunque devuelve .F. , pasa al GET siguiente.
El programa es de una captura de datos con varios GET, que utilizan la cláusula VALID con una función, a la que se las pasa varios parámetros, que comprueba si el código introducido existe en una base de datos. Este programa es llamado desde un menú.
La función esta devolviendo .F. (falso), pero pasa al siguiente GET, no ocurre como en CLIPPER, que no dejaba pasar al siguiente GET.
He probado poniendo antes del VALID
WHEN .F. // He verificado que la función a la que es llamada por el GET devuelve .F.
WHEN QEXI=1 // seria una variable que devuelve la función a la que es llamada por el GET
LA PARTE DE LA RUTINA DE LOS GET, ES LA SIGUIENTE:
func PROALBANCO()
local oBCO, WOK:= .F., QOK:= 0, oGET1, oGET2, oGET3,oGET4,oGET5,oBTO1, oBTO2, oBTO3, oBTO5
LOCAL QEMPRE,QBANCO,WNBCO15,WNBCO30
STORE 0 TO QEMPRE,QBANCO
STORE SPACE(3) TO WBANCO
STORE SPACE(4) TO WEMPRE
WNBCO15=SPACE(15); WNBCO30=SPACE(30)
KR=FABD("R","EMP","BANCOS","BANCO","S000TXX"); IF KR=0; RETURN; ENDIF // llama a función para abrir base de datos
DEFINE DIALOG oBCO FROM 1, 1 TO 41,140 TITLE "A L T A D E B A N C O S D E E M P R E S A S"
@ 01,30 SAY "ALTA-BAJA-MODIF. (A/B/M)"
@ 01,45 GET oGET1 VAR WOPCION OF oBCO UPDATE VALID WOPCION$ "ABM" PICTURE "!" SIZE 10,12
@ 02,30 SAY "CODIGO DE EMPRESA" SIZE 88,12 COLOR "W/B"
@ 02,45 GET oGET2 VAR QEMPRE OF oBCO UPDATE PICTURE "9999" SIZE 20,12 RIGHT VALID FPETENTI1("EMPRE",QEMPRE, ; 3.5,132,4,1,"EMPRE","WEMPRE",0)
@ 03,30 SAY "CODIGO DE BANCO" SIZE 88,12 COLOR "GR+/G"
@ 03,45 GET oGET3 VAR QBANCO OF oBCO UPDATE PICTURE "999" SIZE 18,12 RIGHT VALID FPETENTI1("BANCO",QBANCO, ; 5.5,132,3,1,"BANCO","WNUMAL",4)
@ 04,30 SAY "NOMBRE DE BANCO EN 15" COLOR "W/R+"
@ 04,45 GET oGET4 VAR WNBCO15 OF oBCO UPDATE VALID !Empty(WNBCO15) PICTURE "@!!!!!!!!!!!!!!!" SIZE 60,12
@ 05,30 SAY "NOMBRE DE BANCO EN 30" COLOR "R/W+"
@ 05,45 GET oGET5 VAR WNBCO30 OF oBCO UPDATE VALID !Empty(WNBCO30) PICTURE "@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" SIZE 100,12
@ 07,30 BUTTON oBTO1 PROMPT "Correcto" OF oBCO ACTION ( oBTO1:oJump:= oGet2, oGet2:SetFocus(),;
GRAREBANCO(WOPCION,WEMPRE,WNUMAL,WNBCO15,WNBCO30), QOK=1)
@ 07,45 BUTTON oBTO2 PROMPT "Modificar la OPCION" OF oBCO ACTION (oBTO2:oJump:= oGet1, oGet1:SetFocus(),QOK=2)
@ 07,70 BUTTON oBTO3 PROMPT "Salir de Bancos" OF oBCO UPDATE ACTION ( QOk := 99, oBCO:End() ) CANCEL
ACTIVATE DIALOG oBCO CENTERED
RETURN NIL
He probado poniendo antes del VALID
WHEN .F. // He verificado que la función a la que es llamada por el GET devuelve .F.
WHEN QEXI=1 // seria una variable que devuelve la función a la que es llamada por el GET
El problema le tengo en el 2º y 3º GET, cuando lo envio con el VALID a la funcion.
Gracias por lo que podais decirme.
Problemas con VALID EN EL GET
- Ramon Paredes
- Posts: 215
- Joined: Fri Feb 02, 2007 3:38 pm
- Location: Managua, Nicaragua
Re: Problemas con VALID EN EL GET
Antonio ,
Yo lo hago de la siguiente forma :
@ 01,45 GET oGET1 VAR WOPCION OF oBCO UPDATE PICTURE "!" SIZE 10,12 valid(es_mov(@wopcion))
function es_mov(fopcion)
Local oRet:= .f.
IF UPPER(WOPCION) = "A" .OR. UPPER(WOPCION) = "B" .OR. UPPER(WOPCION) = "M"
oRet := .T.
ELSE
MSGALERT("HA DIGITADO UNA OPCION ERRADA.................VERIFIQUE")
oRet:= .F.
ENDIF
RETURN oRet
y te aseguro que no pasa a otro get si no cumple el valid
Yo lo hago de la siguiente forma :
@ 01,45 GET oGET1 VAR WOPCION OF oBCO UPDATE PICTURE "!" SIZE 10,12 valid(es_mov(@wopcion))
function es_mov(fopcion)
Local oRet:= .f.
IF UPPER(WOPCION) = "A" .OR. UPPER(WOPCION) = "B" .OR. UPPER(WOPCION) = "M"
oRet := .T.
ELSE
MSGALERT("HA DIGITADO UNA OPCION ERRADA.................VERIFIQUE")
oRet:= .F.
ENDIF
RETURN oRet
y te aseguro que no pasa a otro get si no cumple el valid
... Desde la Tierra de lagos y Volcanes......