FAVOR NECESITO AYUDA URGENTE

Post Reply
Miguel Rivera
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm

FAVOR NECESITO AYUDA URGENTE

Post 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
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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.))
regards, saludos

Antonio Linares
www.fivetechsoft.com
Miguel Rivera
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm

Post 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.))
Miguel Rivera
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm

Sigo con el problema en el Get

Post 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.))
User avatar
A&C
Posts: 214
Joined: Sat Aug 19, 2006 1:37 pm
Location: Chile

Post 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...
Mi segundo amor es Programar
Miguel Rivera
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm

Post 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...
User avatar
A&C
Posts: 214
Joined: Sat Aug 19, 2006 1:37 pm
Location: Chile

Post by A&C »

Miguel... pon el codigo para verlo
Mi segundo amor es Programar
User avatar
lubin
Posts: 404
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru
Contact:

Re: FAVOR NECESITO AYUDA URGENTE

Post 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.
Miguel Rivera
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm

Re: FAVOR NECESITO AYUDA URGENTE

Post 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.
User avatar
lubin
Posts: 404
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru
Contact:

Re: FAVOR NECESITO AYUDA URGENTE

Post 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.
Miguel Rivera
Posts: 117
Joined: Sun Oct 01, 2006 11:39 pm

Re: FAVOR NECESITO AYUDA URGENTE

Post 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.
Post Reply