FAVOR NECESITO AYUDA URGENTE

FAVOR NECESITO AYUDA URGENTE

Postby Miguel Rivera » Thu Feb 08, 2007 7:06 pm

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

Postby Antonio Linares » Thu Feb 08, 2007 7:10 pm

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

Postby Miguel Rivera » Thu Feb 08, 2007 7:34 pm

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

Postby Miguel Rivera » Thu Feb 08, 2007 8:34 pm

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

Postby A&C » Fri Feb 09, 2007 12:55 am

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

Postby Miguel Rivera » Fri Feb 09, 2007 2:59 am

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

Postby A&C » Fri Feb 09, 2007 4:53 pm

Miguel... pon el codigo para verlo
Mi segundo amor es Programar
User avatar
A&C
 
Posts: 214
Joined: Sat Aug 19, 2006 1:37 pm
Location: Chile

Re: FAVOR NECESITO AYUDA URGENTE

Postby lubin » Fri Feb 09, 2007 6:14 pm

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: 439
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Re: FAVOR NECESITO AYUDA URGENTE

Postby Miguel Rivera » Fri Feb 09, 2007 8:32 pm

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

Postby lubin » Fri Feb 09, 2007 9:10 pm

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

Re: FAVOR NECESITO AYUDA URGENTE

Postby Miguel Rivera » Fri Feb 09, 2007 9:54 pm

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


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 18 guests