Page 1 of 1
FAVOR NECESITO AYUDA URGENTE
Posted: Thu Feb 08, 2007 7:06 pm
by Miguel Rivera
Amigos:
Tengo un problema de validacion en un Get, que necesito resolver en forma urgente, el caso es el siguiente:
Clipper 5.3b, Fivewin 2.4, Blinker 7.0
Codigo Fuente:
Redefine Get oRut_cli1 Var cRut Id 158 Of oDlgEdit Update
Picture "############" Color "w+/b*";
Valid (Verirut(cRut,"C","oDbclien",3,.t.),iIf(lPara,oNom_cli1:Refresh(),.t.))
Redefine Say oNom_cli1 Prompt Nom_cli1 Id 152 Of oDlgEdit Picture "@!" Color "w+/b*"
La Rutina Verirut = Permite validar el Rut con un calculo matematico, probrado, despues de validar en la misma rutina, consulta si existe el cliente con ese rut, si existe debe devolver un .T. o .F. sin no existe, la consulta por lPara, si trae .T. muestro el nombre del cliente que viene en la variable Nom_cli1 del Id 152, de lo contrario debe pedir nuevamente el rut.
Ojo, Antes de volver de la rutina de Verirut, Nom_cli y lPara, traen los Valor .T. y el Nombre del cliente.
El ERROR que me arroja es el siguiente:
Application
===========
Path and name: C:\UTIL\VTADPTO\INMOBILI.EXE (16 bits)
Size: 464,896 bytes
Max files handles permited: ( SetHandleCount() ) 255
Time from start: 0 hours 0 mins 15 secs
Error occurred at: 08/02/2007, 15:54:57
Error description: Error BASE/1077 Argument error: .NOT.
Args:
[ 1] = U
***
Atentamente,
Miguel Rivera
Posted: Thu Feb 08, 2007 7:10 pm
by Antonio Linares
Miguel,
te faltan un .F. y dos paréntesis:
Valid (Verirut(cRut,"C","oDbclien",3,.t.),iIf(lPara,( oNom_cli1:Refresh(), .F. ) ,.t.))
Posted: Thu Feb 08, 2007 7:34 pm
by Miguel Rivera
Antonio:
Se ha corregido el erro con tu indicacion, pero cuando se cumplen las dos condiciones, es decir, el Rut=Correcto, lPara=.T. y Existe cliente, este muestra el nombre, pero SIGUE PIDIENDO EL RUT, no me permite salir del Get.
Cual es el Error ?
En espera,
Miguel
Antonio Linares wrote:Miguel,
te faltan un .F. y dos paréntesis:
Valid (Verirut(cRut,"C","oDbclien",3,.t.),iIf(lPara,( oNom_cli1:Refresh(), .F. ) ,.t.))
Sigo con el problema en el Get
Posted: Thu Feb 08, 2007 8:34 pm
by Miguel Rivera
Antonio:
Que Get, valida correctamente, pero NO sale del get, no como sacarlo y que pase a los otros gets,
En espera de una respuesta, se despide,
Miguel
Antonio Linares wrote:Miguel,
te faltan un .F. y dos paréntesis:
Valid (Verirut(cRut,"C","oDbclien",3,.t.),iIf(lPara,( oNom_cli1:Refresh(), .F. ) ,.t.))
Posted: Fri Feb 09, 2007 12:55 am
by A&C
Miguel,
Valid (Verirut(cRut,"C","oDbclien",3,.t.),iIf(lPara,( oNom_cli1:Refresh(), .T. ) ,.F.))
Nose porque no hiciste una validacion asi::
Valid Verirut(blablabla) --------> se supone q veritut retorna con Return .T. o Return .F. si se sale del Valid o no,, dentro de Verirut incluyes el refresh de la variable...
Posted: Fri Feb 09, 2007 2:59 am
by Miguel Rivera
Claudio:
Como estas, lo que sucede esque la rutina valida el rut, pero ademas permite consultar la existencia del rut, en la base.
Mira, lo que esta haciendo, asi, se cumplen las dos, es decir rut correcto y existe en la base, por lo que debe muestra el nombre, pero me sigue pidiendo el rut, si por la validacion como tu dices. Cualquiera sea el resultado, ya sea rut incorrecto, no existe en la base, pasa igual a los demas get, me entiendes, debe pasar a los demas get, solo si se cumple la condicion.
Saludos,
Miguel
A&C wrote:Miguel,
Valid (Verirut(cRut,"C","oDbclien",3,.t.),iIf(lPara,( oNom_cli1:Refresh(), .T. ) ,.F.))
Nose porque no hiciste una validacion asi::
Valid Verirut(blablabla) --------> se supone q veritut retorna con Return .T. o Return .F. si se sale del Valid o no,, dentro de Verirut incluyes el refresh de la variable...
Posted: Fri Feb 09, 2007 4:53 pm
by A&C
Miguel... pon el codigo para verlo
Re: FAVOR NECESITO AYUDA URGENTE
Posted: Fri Feb 09, 2007 6:14 pm
by lubin
Holas .. una sugerencia , espero que sirva ...
Lubin
Redefine Get oRut_cli1 Var cRut Id 158 Of oDlgEdit Update ;
Picture "############" Color "w+/b*";
Valid newVerirut(cRut,oNom_cli1)
Redefine Say oNom_cli1 Prompt Nom_cli1 Id 152 Of oDlgEdit Picture "@!" Color "w+/b*"
function newVerirut(cRut,oNom_cli1)
*=======================
local xnrut:=oRut:cText
if .not. ChechkRut(xnrut) && aqui valida con la formula matematica si es ok
msgstop("Nro de Rut no pasa validacion numerica")
return .f. && No lo dejo salir del Get !!
endif
*ahora lo buscamos ... con el metodo que sea en la DBF ejemplo ...
SELECT CLIENTE
SEEK XNRUT
IF FOUND()
oNom_Cli1:cText:=CLIENTE->Nom_cli
oNom_cli1:refresh()
RETURN .T. && SI lo dejo salir del GET
ELSE
MSGSTOP("Cliente no encontrado !! ")
ENDIF
RETURN .F.
Re: FAVOR NECESITO AYUDA URGENTE
Posted: Fri Feb 09, 2007 8:32 pm
by Miguel Rivera
Amigo:
Muchas gracias por tu sugerencia, pero al aplicarla sigo teniendo problemas, yaque la rutina de validacion se encuentra en otro programa llamado rutinas, por lo que la hacer "oNom_cli1:refresh()", me arroja el error BASE/1003 Variable no Existe oNom_cli1. Pienso que deveria declararla publica.
Saludos,
Miguel
}
lubin wrote:Holas .. una sugerencia , espero que sirva ...
Lubin
Redefine Get oRut_cli1 Var cRut Id 158 Of oDlgEdit Update ;
Picture "############" Color "w+/b*";
Valid newVerirut(cRut,oNom_cli1)
Redefine Say oNom_cli1 Prompt Nom_cli1 Id 152 Of oDlgEdit Picture "@!" Color "w+/b*"
function newVerirut(cRut,oNom_cli1)
*=======================
local xnrut:=oRut:cText
if .not. ChechkRut(xnrut) && aqui valida con la formula matematica si es ok
msgstop("Nro de Rut no pasa validacion numerica")
return .f. && No lo dejo salir del Get !!
endif
*ahora lo buscamos ... con el metodo que sea en la DBF ejemplo ...
SELECT CLIENTE
SEEK XNRUT
IF FOUND()
oNom_Cli1:cText:=CLIENTE->Nom_cli
oNom_cli1:refresh()
RETURN .T. && SI lo dejo salir del GET
ELSE
MSGSTOP("Cliente no encontrado !! ")
ENDIF
RETURN .F.
Re: FAVOR NECESITO AYUDA URGENTE
Posted: Fri Feb 09, 2007 9:10 pm
by lubin
Ok Miguel,
Para empezar, la rutina de verificacion que supongo que haces para el RUT (a la que yo llame ChechkRut() por que no se como la llamas) es un proceso Independiente que solo te debe retornar .T. o .F. (si esta OK o NO esta OKI el RUT.).. LUEGO .....
La varialbe oNom_cli1 es visible dentro de la funcion en NewVerirut(cRut,oNom_cli1) porque la recibe como parametro al usarla en tu Valid del Get y dentro de ella se hace el refresh() y no la uses dento de la funcion de verificacion ChechkRut(xnrut) pues ahi no existe!! salvo que la pases como parametro , espero que me entiendas, no tienes por que hacerla publica., al menos a mi siempre me a dado buenos resultados.
nos cuentas .. suerte
Lubin
Miguel Rivera wrote:Amigo:
Muchas gracias por tu sugerencia, pero al aplicarla sigo teniendo problemas, yaque la rutina de validacion se encuentra en otro programa llamado rutinas, por lo que la hacer "oNom_cli1:refresh()", me arroja el error BASE/1003 Variable no Existe oNom_cli1. Pienso que deveria declararla publica.
Saludos,
Miguel
}
lubin wrote:Holas .. una sugerencia , espero que sirva ...
Lubin
Redefine Get oRut_cli1 Var cRut Id 158 Of oDlgEdit Update ;
Picture "############" Color "w+/b*";
Valid newVerirut(cRut,oNom_cli1)
Redefine Say oNom_cli1 Prompt Nom_cli1 Id 152 Of oDlgEdit Picture "@!" Color "w+/b*"
function newVerirut(cRut,oNom_cli1)
*=======================
local xnrut:=oRut:cText
if .not. ChechkRut(xnrut) && aqui valida con la formula matematica si es ok
msgstop("Nro de Rut no pasa validacion numerica")
return .f. && No lo dejo salir del Get !!
endif
*ahora lo buscamos ... con el metodo que sea en la DBF ejemplo ...
SELECT CLIENTE
SEEK XNRUT
IF FOUND()
oNom_Cli1:cText:=CLIENTE->Nom_cli
oNom_cli1:refresh()
RETURN .T. && SI lo dejo salir del GET
ELSE
MSGSTOP("Cliente no encontrado !! ")
ENDIF
RETURN .F.
Re: FAVOR NECESITO AYUDA URGENTE
Posted: Fri Feb 09, 2007 9:54 pm
by Miguel Rivera
Lubin:
Creo que yo habia entendido mal, revise la rutina y aplique lo que me indicastes y HA FUNCIONADO A LAS MIL MARAVILLAS.
Eternamente agradecido, mil gracias amigo.
Saludos,
Miguel Rivera
lubin wrote:Ok Miguel,
Para empezar, la rutina de verificacion que supongo que haces para el RUT (a la que yo llame ChechkRut() por que no se como la llamas) es un proceso Independiente que solo te debe retornar .T. o .F. (si esta OK o NO esta OKI el RUT.).. LUEGO .....
La varialbe oNom_cli1 es visible dentro de la funcion en NewVerirut(cRut,oNom_cli1) porque la recibe como parametro al usarla en tu Valid del Get y dentro de ella se hace el refresh() y no la uses dento de la funcion de verificacion ChechkRut(xnrut) pues ahi no existe!! salvo que la pases como parametro , espero que me entiendas, no tienes por que hacerla publica., al menos a mi siempre me a dado buenos resultados.
nos cuentas .. suerte
Lubin
Miguel Rivera wrote:Amigo:
Muchas gracias por tu sugerencia, pero al aplicarla sigo teniendo problemas, yaque la rutina de validacion se encuentra en otro programa llamado rutinas, por lo que la hacer "oNom_cli1:refresh()", me arroja el error BASE/1003 Variable no Existe oNom_cli1. Pienso que deveria declararla publica.
Saludos,
Miguel
}
lubin wrote:Holas .. una sugerencia , espero que sirva ...
Lubin
Redefine Get oRut_cli1 Var cRut Id 158 Of oDlgEdit Update ;
Picture "############" Color "w+/b*";
Valid newVerirut(cRut,oNom_cli1)
Redefine Say oNom_cli1 Prompt Nom_cli1 Id 152 Of oDlgEdit Picture "@!" Color "w+/b*"
function newVerirut(cRut,oNom_cli1)
*=======================
local xnrut:=oRut:cText
if .not. ChechkRut(xnrut) && aqui valida con la formula matematica si es ok
msgstop("Nro de Rut no pasa validacion numerica")
return .f. && No lo dejo salir del Get !!
endif
*ahora lo buscamos ... con el metodo que sea en la DBF ejemplo ...
SELECT CLIENTE
SEEK XNRUT
IF FOUND()
oNom_Cli1:cText:=CLIENTE->Nom_cli
oNom_cli1:refresh()
RETURN .T. && SI lo dejo salir del GET
ELSE
MSGSTOP("Cliente no encontrado !! ")
ENDIF
RETURN .F.