Page 1 of 1

Como avanzar de registro en registro....

Posted: Fri Sep 01, 2006 12:22 pm
by Elias Torres
Hola a todos...

Me gustaría saber que función se emplea para ir saltando de registro en registro e ir mostrando la información de cada uno. En fox se utiliza un skip() o se juega con el recno() pero aquí no se como es...


Saludos y gracias...

Elías Torres.

Posted: Fri Sep 01, 2006 12:32 pm
by Antonio Linares
Elias,

DbSkip( <nRegistros> )

puedes anteponer el nombre del área de trabajo:

( Alias )->( DbSkip( <nRegistros> ) )

Posted: Fri Sep 01, 2006 12:33 pm
by Antonio Linares
Elias,

El mostrar el contenido de los registros depende de como estés diseñando una determinada pantalla de tu aplicación.

Tienes GETs en pantalla ? SAYs ? Estas mostrando información ó estás capturando información ?

Posted: Fri Sep 01, 2006 12:42 pm
by Elias Torres
Gracias Antonio...

Vale, te cuento lo que pretendo....

Tengo dos tablas, clientes y articulos, y he creado un filtro para relacionar un cliente con todos sus articulos. Lo que pretendo es teniendo un cliente que pueda ir avanzando por sus articulos....

Para ello estoy utilizando unos Get's donde muestro la información de la tabla y unos botones que me permitan ir al primer registro, al siguiente, al anterior y al último.

He puesto unos Get's porque quiero dar opcion a introducir un articulo nuevo para ese cliente.


Saludos y gracias

Elías Torres.

Posted: Fri Sep 01, 2006 12:46 pm
by Antonio Linares
Elías,

Puedes capturar una imagen de tu pantalla y ponerla aquí ? Usa www.imageshack.us y copia aqui el link que te proporciona.

Puedes proporcionar un pequeño ejemplo en PRG para que veamos como lo estás planteando ?

Posted: Mon Sep 04, 2006 11:47 am
by Elias Torres
Hola Antonio.

En este link está la imagen de lo que te comentaba

http://img124.imageshack.us/my.php?image=dibujomg1.gif


Lo que pretendo es que con los botones de direccion me mueva solamente por los registros de la tabla de articulos. Esto lo he conseguido pero cada vez que me muevo hacia un registro me crea un dialogo nuevo, con lo que si pretendo salir tengo que ir cerrando una por una todas las pantallas que me ha abierto.....

El código que utilizo para esta pantalla es el siguiente:


FUNCTION Registros()

DEFINE dialog odlg resource "Cliente_articulos"

REDEFINE GET clientes->Nomcli id 500 OF odlg
REDEFINE GET clientes->Apecli id 510 OF odlg
redefine get articulos->cod_art id 100 of odlg
redefine get articulos->nom_art id 200 of odlg
redefine get articulos->cant id 300 of odlg
redefine get articulos->precio id 400 of odlg

ACTIVATE dialog odlg;
on init barra_desplazamiento(odlg)

RETURN nil


barra_dezplazamiento(odlg) es una funcion que contiene los iconos de desplazamiento...

FUNCTION barra_desplazamiento(odlg)

LOCAL aux:=1
@ 0, 0 BTNBMP NAME "primero" SIZE 32, 32 of odlg
@ 0, 32 BTNBMP NAME "anterior" SIZE 32, 32 of odlg
@ 0, 64 BTNBMP NAME "siguiente" SIZE 32, 32 of odlg action avanza_articulos(odlg)
@ 0, 96 BTNBMP NAME "ultimo" SIZE 32, 32 of odlg
@ 0, 178 BTNBMP NAME "buscar" size 32, 32 of odlg action odlg:end(),busca_cliente(aux)
@ 0, 210 BTNBMP NAME "salir" SIZE 32, 32 of odlg action odlg:end()

RETU nil

funcion avanza_articulos(odlg) la utilizo para comprobar el final de los articulos (para que solo me muestre los que tiene)

FUNCTION avanza_articulos(odlg)

IF !EOF()
articulos->(dbskip(1))
registros()
ELSE
MsgInfo( "El Cliente no tiene más articulos relacionados" )
endif

RETURN nil




Saludos y gracias...

Elías Torres.

Posted: Mon Sep 04, 2006 12:22 pm
by Antonio Linares
Elías,

Gracias por la imagen, ahora está claro como lo quieres hacer.

Aqui tienes tu código modificado:

Code: Select all

FUNCTION Registros() 

   local oDlg, oGetCod, oGetNom, oGetCant, oGetPrecio

   DEFINE dialog odlg resource "Cliente_articulos" 

   REDEFINE GET clientes->Nomcli id 500 OF odlg 
   REDEFINE GET clientes->Apecli id 510 OF odlg 
   redefine get oGetCod VAR articulos->cod_art id 100 of odlg 
   redefine get oGetNom VAR articulos->nom_art id 200 of odlg 
   redefine get oGetCant VAR articulos->cant id 300 of odlg 
   redefine get oGetPrecio VAR articulos->precio id 400 of odlg 

ACTIVATE dialog odlg; 
   on init barra_desplazamiento( odlg, oGetCod, oGetNom, oGetCant, oGetPrecio ) 

RETURN nil 

FUNCTION barra_desplazamiento( odlg, oGetCod, oGetNom, oGetCant, oGetPrecio ) 

   LOCAL aux:=1 

   @ 0, 0 BTNBMP NAME "primero" SIZE 32, 32 of odlg 
   @ 0, 32 BTNBMP NAME "anterior" SIZE 32, 32 of odlg 
   @ 0, 64 BTNBMP NAME "siguiente" SIZE 32, 32 of odlg action avanza_articulos(odlg, oGetCod, oGetNom, oGetCant, oGetPrecio ) 
   @ 0, 96 BTNBMP NAME "ultimo" SIZE 32, 32 of odlg 
   @ 0, 178 BTNBMP NAME "buscar" size 32, 32 of odlg action odlg:end(),busca_cliente(aux) 
   @ 0, 210 BTNBMP NAME "salir" SIZE 32, 32 of odlg action odlg:end() 

RETU nil 

FUNCTION avanza_articulos(odlg, oGetCod, oGetNom, oGetCant, oGetPrecio ) 

IF !EOF() 
   articulos->(dbskip(1)) 
   // registros()   NO!!!
   oGetCod:Refresh()  // repinta los contenidos de los GETs
   oGetNom:Refresh()
   oGetCant:Refresh()
   oGetPrecio:Refresh() 
ELSE 
   MsgInfo( "El Cliente no tiene más articulos relacionados" ) 
endif 

RETURN nil 

Posted: Mon Sep 04, 2006 12:30 pm
by Elias Torres
Gracias Antonio, era lo que buscaba....


Saludos...

Elías Torres.