visualizar mal en listbox
-
- Posts: 20
- Joined: Sat Jul 22, 2006 12:34 pm
- Location: Madrid - España
visualizar mal en listbox
al visualizar el listbox me sale siempre el mismo registro repetido
salen 4 filas pero todas exactamente iguales con el mismo registro
adjunto el codigo de la funcion de visualizacion
antes abro la base de datos con
aDbf := Array( DBF_LON )
USE ( CurDir() + "\UBICACIO" ) NEW
INDEX ON UBICACIO->UBICACION TO ( CurDir() + "\UBICACI1" )
no se si me falta algo de los indices en el listbox
*---------------------------
STATIC FUNCTION Sel_ubica()
*---------------------------
LOCAL oDlg, oFont, oLbx
LOCAL nRecno := 0
LOCAL cAlias := aDbf[ DBF_UBICACIO]
HideKeyboard()
DEFINE FONT oFont NAME "Arial" SIZE 0, -12
DEFINE DIALOG oDlg RESOURCE "ubicaciones"
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->ubicanume) , ( cAlias )->ubicacion ,str(( cAlias )->cantidad),;
str(( cAlias )->articulo), ( cAlias )->descripci ,( cAlias )->referenc , ( cAlias )->almacen ;
HEADERS "Nume ", "Ubicacion" ,"Existen.", "Articulo","Descripcion", " Referencia","Almacen" ;
ID 500 OF oDlg
oLbx:aColSizes := { 40, 50,50,50, 50,70,50,40 }
oLbx:blDblClick := {|| ( nRecno := (cAlias)->( Recno() ),;
oDlg:End() ) }
REDEFINE BUTTON ID 110 OF oDlg ;
ACTION ( dbclosearea(), oDlg:End() )
ACTIVATE DIALOG oDlg CENTERED
RETU nRecno
[/img]
salen 4 filas pero todas exactamente iguales con el mismo registro
adjunto el codigo de la funcion de visualizacion
antes abro la base de datos con
aDbf := Array( DBF_LON )
USE ( CurDir() + "\UBICACIO" ) NEW
INDEX ON UBICACIO->UBICACION TO ( CurDir() + "\UBICACI1" )
no se si me falta algo de los indices en el listbox
*---------------------------
STATIC FUNCTION Sel_ubica()
*---------------------------
LOCAL oDlg, oFont, oLbx
LOCAL nRecno := 0
LOCAL cAlias := aDbf[ DBF_UBICACIO]
HideKeyboard()
DEFINE FONT oFont NAME "Arial" SIZE 0, -12
DEFINE DIALOG oDlg RESOURCE "ubicaciones"
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->ubicanume) , ( cAlias )->ubicacion ,str(( cAlias )->cantidad),;
str(( cAlias )->articulo), ( cAlias )->descripci ,( cAlias )->referenc , ( cAlias )->almacen ;
HEADERS "Nume ", "Ubicacion" ,"Existen.", "Articulo","Descripcion", " Referencia","Almacen" ;
ID 500 OF oDlg
oLbx:aColSizes := { 40, 50,50,50, 50,70,50,40 }
oLbx:blDblClick := {|| ( nRecno := (cAlias)->( Recno() ),;
oDlg:End() ) }
REDEFINE BUTTON ID 110 OF oDlg ;
ACTION ( dbclosearea(), oDlg:End() )
ACTIVATE DIALOG oDlg CENTERED
RETU nRecno
[/img]
Antonio
Madrid
España
Madrid
España
-
- Posts: 20
- Joined: Sat Jul 22, 2006 12:34 pm
- Location: Madrid - España
Me respondo a mi mismo
me faltaba el poner el alias detras del olbx
queda asi y ya funciona
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->ubicanume) , ( cAlias )->ubicacion ,str(( cAlias )->cantidad),;
str(( cAlias )->articulo), ( cAlias )->descripci ,( cAlias )->referenc , ( cAlias )->almacen ;
HEADERS "Nume ", "Ubicacion" ,"Existen.", "Articulo","Descripcion", " Referencia","Almacen" ;
ALIAS cAlias ;
ID 500 OF oDlg
he encontrado la solución en este foro
saludos
me faltaba el poner el alias detras del olbx
queda asi y ya funciona
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->ubicanume) , ( cAlias )->ubicacion ,str(( cAlias )->cantidad),;
str(( cAlias )->articulo), ( cAlias )->descripci ,( cAlias )->referenc , ( cAlias )->almacen ;
HEADERS "Nume ", "Ubicacion" ,"Existen.", "Articulo","Descripcion", " Referencia","Almacen" ;
ALIAS cAlias ;
ID 500 OF oDlg
he encontrado la solución en este foro
saludos
Antonio
Madrid
España
Madrid
España
-
- Posts: 20
- Joined: Sat Jul 22, 2006 12:34 pm
- Location: Madrid - España
sigo a vueltas con el listbox
he tenido que poner el filtro en el listbox, por que era la unica forma en que me lo visualizase bien
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
ALIAS ( cAlias )->( DBSETFILTER( {|| factura = v[ O_FACTURA ] }, "lineas de la cabecera" ) ) ;
ID 500 OF o[ O_DLG ]
y como ahora me vuelve el problema primitivo
se visualiza la primera linea del list box un monton de veces repetida
¿ como podria poner en el listbox una sentencia dbgotop que pueda convivir con la de DBSETFILTER ?
He probado de varias maneras con (cAlias)->dbgotop() pero no me lo admite
gracias por la ayuda
he tenido que poner el filtro en el listbox, por que era la unica forma en que me lo visualizase bien
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
ALIAS ( cAlias )->( DBSETFILTER( {|| factura = v[ O_FACTURA ] }, "lineas de la cabecera" ) ) ;
ID 500 OF o[ O_DLG ]
y como ahora me vuelve el problema primitivo
se visualiza la primera linea del list box un monton de veces repetida
¿ como podria poner en el listbox una sentencia dbgotop que pueda convivir con la de DBSETFILTER ?
He probado de varias maneras con (cAlias)->dbgotop() pero no me lo admite
gracias por la ayuda
Antonio
Madrid
España
Madrid
España
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Puedes usar la claúsula [ SELECT <cField> FOR <uValue1> [ TO <uValue2> ] ] que es mucho más rápida que un filtro pues se basa en un índice. Ejemplo:
Code: Select all
INDEX ON Clientes->Nombre TO CliName
SET INDEX TO CliName
GO TOP
REDEFINE LISTBOX oLbx ;
FIELDS Clientes->Nombre, Clientes->Direccion,;
Clientes->Telefono, ;
Str( Clientes->Edad, 3 ) ;
HEADERS "Name", "Address", "Phone", "Age" ;
FIELDSIZES 240, 310, 114, 24 ;
SELECT Nombre FOR "Laureano" TO "Paco" ;
SIZE 284, 137 ID ... OF oDlg
-
- Posts: 20
- Joined: Sat Jul 22, 2006 12:34 pm
- Location: Madrid - España
Antonio
muchas gracias por tu ayuda, se que tengo un error por lo que no me sale pero sigo dandole vueltas, y llevo ya casi una semana y no doy con ello
he creado un indice primero
USE ( CurDir() + "\LINSALID" ) NEW
INDEX ON str(LINSALID->FACTURA,6) TO ( CurDir() + "\LINSALI1" )
aDbf[ DBF_LINSALID ] := Alias()
go top
REDEFINE GET o[ O_FECHA ] VAR v[ O_FECHA ] ID 114 OF o[ O_DLG ]
REDEFINE GET o[ O_CLIENTES ] VAR v[ O_CLIENTES ] ID 115 OF o[ O_DLG ] PICTURE '999999'
REDEFINE GET o[ O_NOMBCLIENT] VAR v[ O_NOMBCLIENT ] ID 112 OF o[ O_DLG ]
REDEFINE GET o[ O_FACTURA ] VAR v[ O_FACTURA ] ID 200 OF o[ O_DLG ]
después hago el listbox
si lo hago así me funciona perfectamente
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
SELECT str(linsalid->factura,6) FOR " 27" TO " 27"
Alias cAlias ;
ID 500 OF o[ O_DLG ]
pero si lo hago como debe ser
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
SELECT str(linsalid->factura,6) FOR str(v[ O_FACTURA ],6) TO str(v[ O_FACTURA ],6) ;
Alias cAlias ;
ID 500 OF o[ O_DLG ]
no me da ningun error pero no me visualiza nada, ninguna linea del listbox
he repasado 80 veces la base de datos y el campo factura es identico en el fichero hijo linsalid que en el fichero padre
ambos son numerico 6
si le pongo algun msginfo para ver el valor que toma v[ O_FACTURA ] no me lo muestra, ya estoy perdido, ¿por donde puedo ver donde tengo el fallo?
saludos y muchas gracias por la ayuda
muchas gracias por tu ayuda, se que tengo un error por lo que no me sale pero sigo dandole vueltas, y llevo ya casi una semana y no doy con ello
he creado un indice primero
USE ( CurDir() + "\LINSALID" ) NEW
INDEX ON str(LINSALID->FACTURA,6) TO ( CurDir() + "\LINSALI1" )
aDbf[ DBF_LINSALID ] := Alias()
go top
REDEFINE GET o[ O_FECHA ] VAR v[ O_FECHA ] ID 114 OF o[ O_DLG ]
REDEFINE GET o[ O_CLIENTES ] VAR v[ O_CLIENTES ] ID 115 OF o[ O_DLG ] PICTURE '999999'
REDEFINE GET o[ O_NOMBCLIENT] VAR v[ O_NOMBCLIENT ] ID 112 OF o[ O_DLG ]
REDEFINE GET o[ O_FACTURA ] VAR v[ O_FACTURA ] ID 200 OF o[ O_DLG ]
después hago el listbox
si lo hago así me funciona perfectamente
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
SELECT str(linsalid->factura,6) FOR " 27" TO " 27"
Alias cAlias ;
ID 500 OF o[ O_DLG ]
pero si lo hago como debe ser
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
SELECT str(linsalid->factura,6) FOR str(v[ O_FACTURA ],6) TO str(v[ O_FACTURA ],6) ;
Alias cAlias ;
ID 500 OF o[ O_DLG ]
no me da ningun error pero no me visualiza nada, ninguna linea del listbox
he repasado 80 veces la base de datos y el campo factura es identico en el fichero hijo linsalid que en el fichero padre
ambos son numerico 6
si le pongo algun msginfo para ver el valor que toma v[ O_FACTURA ] no me lo muestra, ya estoy perdido, ¿por donde puedo ver donde tengo el fallo?
saludos y muchas gracias por la ayuda
Antonio
Madrid
España
Madrid
España
Has probado:antonio1095 wrote:Antonio
muchas gracias por tu ayuda, se que tengo un error por lo que no me sale pero sigo dandole vueltas, y llevo ya casi una semana y no doy con ello
he creado un indice primero
USE ( CurDir() + "\LINSALID" ) NEW
INDEX ON str(LINSALID->FACTURA,6) TO ( CurDir() + "\LINSALI1" )
aDbf[ DBF_LINSALID ] := Alias()
go top
REDEFINE GET o[ O_FECHA ] VAR v[ O_FECHA ] ID 114 OF o[ O_DLG ]
REDEFINE GET o[ O_CLIENTES ] VAR v[ O_CLIENTES ] ID 115 OF o[ O_DLG ] PICTURE '999999'
REDEFINE GET o[ O_NOMBCLIENT] VAR v[ O_NOMBCLIENT ] ID 112 OF o[ O_DLG ]
REDEFINE GET o[ O_FACTURA ] VAR v[ O_FACTURA ] ID 200 OF o[ O_DLG ]
después hago el listbox
si lo hago así me funciona perfectamente
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
SELECT str(linsalid->factura,6) FOR " 27" TO " 27"
Alias cAlias ;
ID 500 OF o[ O_DLG ]
pero si lo hago como debe ser
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
SELECT str(linsalid->factura,6) FOR str(v[ O_FACTURA ],6) TO str(v[ O_FACTURA ],6) ;
Alias cAlias ;
ID 500 OF o[ O_DLG ]
no me da ningun error pero no me visualiza nada, ninguna linea del listbox
he repasado 80 veces la base de datos y el campo factura es identico en el fichero hijo linsalid que en el fichero padre
ambos son numerico 6
si le pongo algun msginfo para ver el valor que toma v[ O_FACTURA ] no me lo muestra, ya estoy perdido, ¿por donde puedo ver donde tengo el fallo?
saludos y muchas gracias por la ayuda
...
SELECT linsalid->factura FOR 27 TO 27 ;
...
Saludos
Carlos G.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
-
- Posts: 20
- Joined: Sat Jul 22, 2006 12:34 pm
- Location: Madrid - España
gracias por la ayuda
he cambiado la variable por una variable publica
despues de muchas pruebas con lo que mejor me sale es con esto
Public m2filtro:=" "
*------------------------------
STATIC FUNCTION sali_Find(o,v)
*------------------------------
LOCAL cAlias := aDbf[ DBF_SALIDAS ]
LOCAL nRecno := Sel_sali()
IF nRecno > 0
( cAlias )->( DbGoto( nRecno ) )
v[ O_CLIENTES ] := ( cAlias)->clientes
v[ O_FECHA ] := ( cAlias )->fecha
v[ O_NOMBCLIENT]:= ( cAlias )->nombclient
v[ O_FACTURA ]:= ( cAlias )->factura
v[ O_RECNO ] := nRecno
sali_RefreshVar( o, v )
m2filtro := str(( cAlias )->factura,6)
ENDIF
RETU NIL
*------------------------------
STATIC FUNCTION SALIDAS()
*------------------------------
LOCAL oFont, oLbx
LOCAL o := Array( O_LON )
local v := Array( O_LON )
LOCAL cAlias := aDbf[ DBF_LINSALID]
sali_IniVar( o, v )
DEFINE FONT oFont NAME "Arial" SIZE 0, -12
DEFINE DIALOG o[ O_DLG ] RESOURCE "NUEVASALIDA"
REDEFINE GET o[ O_FECHA ] VAR v[ O_FECHA ] ID 114 OF o[ O_DLG ]
REDEFINE GET o[ O_CLIENTES ] VAR v[ O_CLIENTES ] ID 115 OF o[ O_DLG ] PICTURE '999999'
REDEFINE GET o[ O_NOMBCLIENT] VAR v[ O_NOMBCLIENT ] ID 112 OF o[ O_DLG ]
REDEFINE GET o[ O_FACTURA ] VAR v[ O_FACTURA ] ID 200 OF o[ O_DLG ] PICTURE '999999'
msginfo("m2filtro = " + m2filtro )
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
ALIAS ( cAlias )->( DBSETFILTER( {|| str(factura,6) = m2filtro }, "lineas de la cabecera" ) ) ;
ID 500 OF o[ O_DLG ]
oLbx:Gotop()
oLbx:Refresh()
REDEFINE BUTTON ID 111 OF o[ O_DLG ] ACTION ( linsalid(o,v) )
REDEFINE BUTTON ID 207 OF o[ O_DLG ] ACTION ( cli_busca(o,v) )
ACTIVATE DIALOG o[ O_DLG ] CENTERED ;
ON INIT ( sali_Bar( o, v ), .f. )
RETU NIL
el problema es que el listbox si que localiza los registros que cumplen pero lo pinta mal, pinta el primer registro muchas veces seguidas
si entro luego en los registros que ha seleccionado lo ha hecho bien
pero le falta un go top que sea efectivo
he puesto
oLbx:Gotop()
pero no hace nada
otras veces lo he resuelto poniendo despues
Alias cAlias
pero esta vez no me responde
[/img]
he cambiado la variable por una variable publica
despues de muchas pruebas con lo que mejor me sale es con esto
Public m2filtro:=" "
*------------------------------
STATIC FUNCTION sali_Find(o,v)
*------------------------------
LOCAL cAlias := aDbf[ DBF_SALIDAS ]
LOCAL nRecno := Sel_sali()
IF nRecno > 0
( cAlias )->( DbGoto( nRecno ) )
v[ O_CLIENTES ] := ( cAlias)->clientes
v[ O_FECHA ] := ( cAlias )->fecha
v[ O_NOMBCLIENT]:= ( cAlias )->nombclient
v[ O_FACTURA ]:= ( cAlias )->factura
v[ O_RECNO ] := nRecno
sali_RefreshVar( o, v )
m2filtro := str(( cAlias )->factura,6)
ENDIF
RETU NIL
*------------------------------
STATIC FUNCTION SALIDAS()
*------------------------------
LOCAL oFont, oLbx
LOCAL o := Array( O_LON )
local v := Array( O_LON )
LOCAL cAlias := aDbf[ DBF_LINSALID]
sali_IniVar( o, v )
DEFINE FONT oFont NAME "Arial" SIZE 0, -12
DEFINE DIALOG o[ O_DLG ] RESOURCE "NUEVASALIDA"
REDEFINE GET o[ O_FECHA ] VAR v[ O_FECHA ] ID 114 OF o[ O_DLG ]
REDEFINE GET o[ O_CLIENTES ] VAR v[ O_CLIENTES ] ID 115 OF o[ O_DLG ] PICTURE '999999'
REDEFINE GET o[ O_NOMBCLIENT] VAR v[ O_NOMBCLIENT ] ID 112 OF o[ O_DLG ]
REDEFINE GET o[ O_FACTURA ] VAR v[ O_FACTURA ] ID 200 OF o[ O_DLG ] PICTURE '999999'
msginfo("m2filtro = " + m2filtro )
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
ALIAS ( cAlias )->( DBSETFILTER( {|| str(factura,6) = m2filtro }, "lineas de la cabecera" ) ) ;
ID 500 OF o[ O_DLG ]
oLbx:Gotop()
oLbx:Refresh()
REDEFINE BUTTON ID 111 OF o[ O_DLG ] ACTION ( linsalid(o,v) )
REDEFINE BUTTON ID 207 OF o[ O_DLG ] ACTION ( cli_busca(o,v) )
ACTIVATE DIALOG o[ O_DLG ] CENTERED ;
ON INIT ( sali_Bar( o, v ), .f. )
RETU NIL
el problema es que el listbox si que localiza los registros que cumplen pero lo pinta mal, pinta el primer registro muchas veces seguidas
si entro luego en los registros que ha seleccionado lo ha hecho bien
pero le falta un go top que sea efectivo
he puesto
oLbx:Gotop()
pero no hace nada
otras veces lo he resuelto poniendo despues
Alias cAlias
pero esta vez no me responde
[/img]
Antonio
Madrid
España
Madrid
España
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Antonio,
La llamada a DbSetFilter() no debes hacerla aqui:
REDEFINE LISTBOX ... ;
ALIAS ( cAlias )->( DBSETFILTER( {|| str(factura,6) = m2filtro }, "lineas de la cabecera" ) ) ;
...
Ahí solo debes especificar ALIAS cAlias
La llamada a ( cAlias )->( DbSetFilter( ... ) ) debes hacerla con anterioridad
La llamada a DbSetFilter() no debes hacerla aqui:
REDEFINE LISTBOX ... ;
ALIAS ( cAlias )->( DBSETFILTER( {|| str(factura,6) = m2filtro }, "lineas de la cabecera" ) ) ;
...
Ahí solo debes especificar ALIAS cAlias
La llamada a ( cAlias )->( DbSetFilter( ... ) ) debes hacerla con anterioridad
-
- Posts: 20
- Joined: Sat Jul 22, 2006 12:34 pm
- Location: Madrid - España
Antonio
lo he hecho asi , que era como lo tenia al principio
pero así no me selecciona ninguna linea en el lista box
si hago
( cAlias )->( DbSetFilter( {|| str(factura,6) = " 27" }, "lineas de salida" ) )
se visualiza perfectamente
pero si hago
( cAlias )->( DbSetFilter( {|| str(factura,6) = m2filtro }, "lineas de salida" ) )
no me visualiza ninguna linea
la variable m2filtro es publica y viene de otra function
STATIC FUNCTION sali_Find(o,v)
donde se hace entre otras lineas
m2filtro := str(( cAlias )->factura,6)
en esta function cuando pongo un mensaje la variable m2filtro me la muesta bien
despues en la funcion que hago el filtro ya no la muestra
¿es posible que la variable publica cuando vuelve a la funcion principal no conserve su valor por algún motivo?
esta es la función principal, donde deberia conservarse la variable publica
*------------------------------
STATIC FUNCTION SALIDAS()
*------------------------------
LOCAL oFont, oLbx
LOCAL o := Array( O_LON )
local v := Array( O_LON )
LOCAL cAlias := aDbf[ DBF_LINSALID]
sali_IniVar( o, v )
DEFINE FONT oFont NAME "Arial" SIZE 0, -12
DEFINE DIALOG o[ O_DLG ] RESOURCE "NUEVASALIDA"
REDEFINE GET o[ O_FECHA ] VAR v[ O_FECHA ] ID 114 OF o[ O_DLG ]
REDEFINE GET o[ O_CLIENTES ] VAR v[ O_CLIENTES ] ID 115 OF o[ O_DLG ] PICTURE '999999'
REDEFINE GET o[ O_NOMBCLIENT] VAR v[ O_NOMBCLIENT ] ID 112 OF o[ O_DLG ]
REDEFINE GET o[ O_FACTURA ] VAR v[ O_FACTURA ] ID 200 OF o[ O_DLG ] PICTURE '999999'
msginfo("m2filtro = " + m2filtro ) esto lo muestra la primera vez que carga el programa , pero no las siguientes
( cAlias )->( DbSetFilter( {|| str(factura,6) = m2filtro }, "lineas de salida" ) )
( cAlias )->( dbgotop() )
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
Alias cAlias ;
ID 500 OF o[ O_DLG ]
REDEFINE BUTTON ID 111 OF o[ O_DLG ] ACTION ( linsalid(o,v) )
REDEFINE BUTTON ID 207 OF o[ O_DLG ] ACTION ( cli_busca(o,v) )
ACTIVATE DIALOG o[ O_DLG ] CENTERED ;
ON INIT ( sali_Bar( o, v ), .f. )
RETU NIL
lo he hecho asi , que era como lo tenia al principio
pero así no me selecciona ninguna linea en el lista box
si hago
( cAlias )->( DbSetFilter( {|| str(factura,6) = " 27" }, "lineas de salida" ) )
se visualiza perfectamente
pero si hago
( cAlias )->( DbSetFilter( {|| str(factura,6) = m2filtro }, "lineas de salida" ) )
no me visualiza ninguna linea
la variable m2filtro es publica y viene de otra function
STATIC FUNCTION sali_Find(o,v)
donde se hace entre otras lineas
m2filtro := str(( cAlias )->factura,6)
en esta function cuando pongo un mensaje la variable m2filtro me la muesta bien
despues en la funcion que hago el filtro ya no la muestra
¿es posible que la variable publica cuando vuelve a la funcion principal no conserve su valor por algún motivo?
esta es la función principal, donde deberia conservarse la variable publica
*------------------------------
STATIC FUNCTION SALIDAS()
*------------------------------
LOCAL oFont, oLbx
LOCAL o := Array( O_LON )
local v := Array( O_LON )
LOCAL cAlias := aDbf[ DBF_LINSALID]
sali_IniVar( o, v )
DEFINE FONT oFont NAME "Arial" SIZE 0, -12
DEFINE DIALOG o[ O_DLG ] RESOURCE "NUEVASALIDA"
REDEFINE GET o[ O_FECHA ] VAR v[ O_FECHA ] ID 114 OF o[ O_DLG ]
REDEFINE GET o[ O_CLIENTES ] VAR v[ O_CLIENTES ] ID 115 OF o[ O_DLG ] PICTURE '999999'
REDEFINE GET o[ O_NOMBCLIENT] VAR v[ O_NOMBCLIENT ] ID 112 OF o[ O_DLG ]
REDEFINE GET o[ O_FACTURA ] VAR v[ O_FACTURA ] ID 200 OF o[ O_DLG ] PICTURE '999999'
msginfo("m2filtro = " + m2filtro ) esto lo muestra la primera vez que carga el programa , pero no las siguientes
( cAlias )->( DbSetFilter( {|| str(factura,6) = m2filtro }, "lineas de salida" ) )
( cAlias )->( dbgotop() )
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
Alias cAlias ;
ID 500 OF o[ O_DLG ]
REDEFINE BUTTON ID 111 OF o[ O_DLG ] ACTION ( linsalid(o,v) )
REDEFINE BUTTON ID 207 OF o[ O_DLG ] ACTION ( cli_busca(o,v) )
ACTIVATE DIALOG o[ O_DLG ] CENTERED ;
ON INIT ( sali_Bar( o, v ), .f. )
RETU NIL
Antonio
Madrid
España
Madrid
España
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
-
- Posts: 20
- Joined: Sat Jul 22, 2006 12:34 pm
- Location: Madrid - España
Antonio
con esto ultimo si funciona, muchas gracias por tu ayuda
pero como la felicidad nunca es completa , algunas lineas quedan ocultas en el listbox por la parte supeerior
he probado con dbgotop y con gotop , pero entonces no aparece nada
SELECT ( cAlias )
SET FILTER TO str(factura,6) = m2filtro
* ( cAlias )->( dbgotop() )
* go top
REDEFINE LISTBOX oLbx ;
FIELDS str(( cAlias )->articulo) , ( cAlias )->nombarti ;
HEADERS "Articulo", "Nombr. Arti" ;
Alias cAlias ;
ID 500 OF o[ O_DLG ]
con esto ultimo si funciona, muchas gracias por tu ayuda
pero como la felicidad nunca es completa , algunas lineas quedan ocultas en el listbox por la parte supeerior
he probado con dbgotop y con gotop , pero entonces no aparece nada
SELECT ( cAlias )
SET FILTER TO str(factura,6) = m2filtro
* ( cAlias )->( dbgotop() )
* go top
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
Madrid
España