Como avanzar de registro en registro....

Post Reply
Elias Torres
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Como avanzar de registro en registro....

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

Post by Antonio Linares »

Elias,

DbSkip( <nRegistros> )

puedes anteponer el nombre del área de trabajo:

( Alias )->( DbSkip( <nRegistros> ) )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

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

Antonio Linares
www.fivetechsoft.com
Elias Torres
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

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

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

Antonio Linares
www.fivetechsoft.com
Elias Torres
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

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

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

Antonio Linares
www.fivetechsoft.com
Elias Torres
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Post by Elias Torres »

Gracias Antonio, era lo que buscaba....


Saludos...

Elías Torres.
Post Reply