Como avanzar de registro en registro....

Como avanzar de registro en registro....

Postby Elias Torres » Fri Sep 01, 2006 12:22 pm

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.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Antonio Linares » Fri Sep 01, 2006 12:32 pm

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: 42107
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Antonio Linares » Fri Sep 01, 2006 12:33 pm

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

Postby Elias Torres » Fri Sep 01, 2006 12:42 pm

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.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Antonio Linares » Fri Sep 01, 2006 12:46 pm

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

Postby Elias Torres » Mon Sep 04, 2006 11:47 am

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.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm

Postby Antonio Linares » Mon Sep 04, 2006 12:22 pm

Elías,

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

Aqui tienes tu código modificado:
Code: Select all  Expand view  RUN
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
User avatar
Antonio Linares
Site Admin
 
Posts: 42107
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Elias Torres » Mon Sep 04, 2006 12:30 pm

Gracias Antonio, era lo que buscaba....


Saludos...

Elías Torres.
Elias Torres
 
Posts: 233
Joined: Wed Aug 09, 2006 3:07 pm


Return to FiveWin para Pocket PC

Who is online

Users browsing this forum: No registered users and 1 guest