Clipper/FiveWin - Valid...

 
Vista:

Valid...

Publicado por Ingrid Lauria (48 intervenciones) el 30/06/2006 02:31:12
tengo dos get asi:
@ 2,2 get Codi Valid Numero(Codi)
@ 3,2 get Clie Valid Nombre(Clie)

por otro lado estan las funciones de validacion, iguales salvo que una trabaja en el area Articulos y la otra en el area Clientes.

function Numero(Codi)
sele Articulos
seek
Codi
if found()
@ 2.20 say Articulos->Descrip
retu .t.
else
@ 2,20 say "articulo inexistente"
retu .f.
endif

El problema que tengo es el siguiente:
la validacion me funciona perfectamente cuando no están las lineas con el say del nombre del articulo o la leyenda que dice que no existe.
Sin esas lineas, los gets se frenan hasta tanto no se ingresen codigos de articulos y clientes que existan, pero cuando la validacion es con el say, aparece el texto que corresponde, pero exista o no exista el articulo, el get se libera, es decir si pongo un codigo de articulo que no existe, sale el mensaje "articulo inexistente" al lado del get, pero el cursor pasa al get siguiente.
donde esta el error???

gracias
Ingrid
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:Valid...

Publicado por Mauricio Arevalo (152 intervenciones) el 30/06/2006 16:11:05
Ingrid:

Lo haria asi:

PasaCod:=PasaCli:=.F.

@ 2,2 get Codi Valid(Numero(Codi),PasaCod)
@ 3,2 get Clie Valid(Nombre(Clie) ,PasaCli)

function Numero(Codi)
sele Articulos
seek
Codi
if found()
@ 2.20 say Articulos->Descrip
PasaCod:=.T.
else
@ 2,20 say "articulo inexistente"
PasaCod:=.F.
endif

Saludos

Mauricio Arevalo
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:Valid...

Publicado por Miguel Salas (53 intervenciones) el 02/07/2006 20:28:02
Aqui te mando la función simplificada :

Funcion numero(Codi)
Local lRet := .f.

if articulos->( dbseek(codi) )
@ 2.20 say Articulos->Descrip

lRet := .t // solo si existe este valor cambia a verdadero y podras salir del valid
else
@ 2.20 say "no existe"
endif
return lRet

Trata de empezar a usar este tipo de funciones (dbseek(),dbskip(),dbappend(),etc) con sus respectivos alias , no es que este mal lo que haces, asi lo hacia yo tambien, pero los he ido cambiando y te simplifican la lectura del programa y ayudan a su comprension.

saludos
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:Valid...

Publicado por ingrid lauria (48 intervenciones) el 03/07/2006 06:35:37
te agradezco muchisimo por responderme, pero sigue fallando, tu prg es exactamente igual al mio, salvo que yo defino .t. o .f. segun lo encuentre o no, y en tu caso es poner .f. y modificarlo si lo encuentra.
gracias igual, sigo probando.
lo mas extraño es que sin el say funciona, pero necesito que aparezca el nombre de articulo o cliente cuando lo encuentra, si no lo encuentra no me interesa la leyenda dado qeu no se sale del get yobliga a ingresar un codigo que exista, pero si existe necesito que salga la descripcion, y no logro encontrar el error.

gracias.
ingrid
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:Valid...

Publicado por msalas (53 intervenciones) el 03/07/2006 20:49:00
ya viste que tienes un punto en lugar de coma?
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:Valid...

Publicado por Alvaro (79 intervenciones) el 03/07/2006 23:12:19
Tienes que usar un VALID con la claúsula IF:

@ 2,2 get Codi Valid (IF ( articulo->(DBSEEK(CODI)), ( ........., .T.), ;
(ALERT ("No existe el código), .F.) )

No te completo el código, porque no sé si estás usando Clipper puro ó
Clipper`+ FiveWin.
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:Valid...

Publicado por ingrid lauria (48 intervenciones) el 06/07/2006 02:19:08
gracias por responder.
gracias por esa vocación de ayudar.
tengo clipper + FW o sea pondré
@ F,C say Articulos->Descripcion of Dlg size 150,20
lo pruebo y veo si funciona.

ingrid
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:Valid...

Publicado por Alvaro (79 intervenciones) el 06/07/2006 20:25:54
Sabiendo que utilizas Clipper + FW, puedo ser mas preciso. Puedes prescindir de las funciones auxiliares, poniendo un IF al valid.
Si no te funciona es problema de las comas (,) en el valid. Cambialas hasta que funciones.

@ 2, 32 SAY oSay PROMPT SPACE(30) OF oDlg PIXEL
@ 2, 2 GET oGet VAR Codi OF oDlg ;
VALID ( IF ( articulo->(DBSEEK(codi), ;
( oSay:SetText(articulos->DESCRIP) ,.t.), ; // primero
( ALERT("ARTICULO INEXISTENTE", .f.) ) // segundo

Cuando encuentra el artículo, lo muestra en pantalla (donde tengas definido oSay), y como despues hemos puesto ".t." sale del Get.- Cuando no lo encuentra, funciona el "segundo", sale un aviso y como hemos puesto .f. no sale del Get.

Espero que te sirva y que los Dioses te sean propicios.
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:Valid...

Publicado por ingrid lauria (48 intervenciones) el 07/07/2006 19:27:52
mmmm, gracias por tu "apoyo", se ve que eres una nulidad en programacion, como que los dioses me sean propicios

ingrid
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:Valid...

Publicado por Alvaro (79 intervenciones) el 08/07/2006 09:54:18
En el mundo greco-romano, del que procede nuestra cultura, cuando a una persona se le quería desear suerte, se le decia "que los Dioses te sean propicios". Pero como dice el refranero castellano "No se ha hecho la miel para la boca del asno".
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