visualizar listbox hijo

Post Reply
antonio1095
Posts: 20
Joined: Sat Jul 22, 2006 12:34 pm
Location: Madrid - España

visualizar listbox hijo

Post by antonio1095 »

¿como puedo hacer para poder visualizar el listbox hijo de un fichero ?
quiero mostrar un fichero de compras con su cabecera y sus lineas de esa compra
tengo
*------------------------------
STATIC FUNCTION Compras()
*------------------------------
LOCAL oFont, oLbx
LOCAL o := Array( O_LON )
LOCAL v := Array( O_LON )
LOCAL cAlias := aDbf[ DBF_LINENTRA]

Comp_IniVar( o, v )

oLbx := TWBrowse():New( 50, 100 )

DEFINE FONT oFont NAME "Arial" SIZE 0, -12
DEFINE DIALOG o[ O_DLG ] RESOURCE "NUEVACOMPRA"


REDEFINE GET o[ O_NUMERO ] VAR v[ O_NUMERO ] ID 200 OF o[ O_DLG ] PICTURE '999999'
REDEFINE GET o[ O_FECHA ] VAR v[ O_FECHA ] ID 114 OF o[ O_DLG ]
REDEFINE GET o[ O_PROVEEDOR ] VAR v[ O_PROVEEDOR ] ID 115 OF o[ O_DLG ]


REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
ALIAS cAlias ;
ID 500 OF o[ O_DLG ]


ACTIVATE DIALOG o[ O_DLG ] CENTERED ;
ON INIT ( comp_Bar( o, v ), .f. )


_ numero , fecha y proveedor del get son del fichero compras y el listbox son del fichero hijo
¿deberia funcionar asi?
las bases de datos las abro antes con
USE ( CurDir() + "\COMPRAS" ) NEW
INDEX ON STR(COMPRAS->NUMERO) TO ( CurDir() + "\COMPRA1" )

aDbf[ DBF_COMPRAS ] := Alias()

USE ( CurDir() + "\LINENTRA" ) NEW
INDEX ON STR(LINENTRA->COMPRAS) TO ( CurDir() + "\LINENTR1" )

aDbf[ DBF_LINENTRA ] := Alias()

pero no me acaba de funcionar
para operar con las 2 podria referirme a una con
LOCAL cAlias := aDbf[ DBF_LINENTRA]

y a la otra con
LOCAL cAlias1:= aDbf[ DBF_COMPRAS]

gracias por la colaboración
saludos
Antonio
Antonio
Madrid
España
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Antonio,

Este código no es necesario:

// oLbx := TWBrowse():New( 50, 100 )

En el recurso tienes que haber declarado el browse como "TWBrowse"
regards, saludos

Antonio Linares
www.fivetechsoft.com
antonio1095
Posts: 20
Joined: Sat Jul 22, 2006 12:34 pm
Location: Madrid - España

Post by antonio1095 »

Gracias Antonio
lo que no consigo es que el olbx, me muestre solo las lineas que necesito
solo quiero visualizar las lineas del olbx , que sean hijas del registro de cabecera

he probado con dbfilter , con select y con WHEN

declaro una variable publica m1filtro y despues intento que solo se visualicen esas lineas , pero no lo consigo

REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
ALIAS cAlias ;
ID 500 OF o[ O_DLG ]


lineas probadas entre ALIAS E ID


* SELECT ( cAlias )->compras FOR m1filtro ;
* WHEN (( cAlias )->compras = m1filtro ) ;

¿con que opción puedo filtrar o limitar las lineas visualizadas en el olbx?

saludos
Antonio
Antonio
Madrid
España
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Usa el comando de Clipper:

SET FILTER TO ...

aunque es más eficiente usar un índice condicional:

INDEX ON ... TO ... FOR ...

Depende de la cantidad de registros que vayas a usar.
regards, saludos

Antonio Linares
www.fivetechsoft.com
antonio1095
Posts: 20
Joined: Sat Jul 22, 2006 12:34 pm
Location: Madrid - España

Post by antonio1095 »

pero el comando SET FILTER TO
no me lo admite en el REDIFINE LISTBOX
lo tengo que poner al abrir la base de datos

¿como puede volver abrir la base de datos y hacer el filtro si he definido la base de datos con cAlias?

lo he intentado hacer son SET FILTER TO CAMPO = VARIABLE PUBLICA, pero no me funciona

este es el codigo el set filter lo hago antes en
USE ( CurDir() + "\LINENTRA" ) NEW
INDEX ON STR(LINENTRA->COMPRAS) TO ( CurDir() + "\LINENTR1" )

aDbf[ DBF_LINENTRA ] := Alias()
SET FILTER TO m1filtro = LINENTRA->COMPRAS


depues en otra funcion hago


LOCAL cAlias := aDbf[ DBF_LINENTRA]

Comp_IniVar( o, v )

DEFINE FONT oFont NAME "Arial" SIZE 0, -12
DEFINE DIALOG o[ O_DLG ] RESOURCE "NUEVACOMPRA"


REDEFINE GET o[ O_NUMERO ] VAR v[ O_NUMERO ] ID 200 OF o[ O_DLG ] PICTURE '999999'
REDEFINE GET o[ O_FECHA ] VAR v[ O_FECHA ] ID 114 OF o[ O_DLG ]
REDEFINE GET o[ O_PROVEEDOR ] VAR v[ O_PROVEEDOR ] ID 115 OF o[ O_DLG ]

m1filtro := o[ O_NUMERO ]

REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
ALIAS cAlias ;
ID 500 OF o[ O_DLG ]
Antonio
Madrid
España
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Antonio,

La llamada a SET FILTER TO ... la tienes que hacer despues de haber abierto la DBF con USE. Y estando situado en ese area de trabajo, no en otra area de trabajo.

Aqui puedes revisar la documentación de SET FILTER ... y de todos los demás comandos y funciones de Clipper:

http://www.ousob.com/ng/clguide/nga2c64.php

De todas formas, haz todas las preguntas que necesites que estamos aqui para ayudarte :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Post Reply