Asignar campos a LISTBOX

Post Reply
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Asignar campos a LISTBOX

Post by triumvirato »

Seguro es de cajón, pero no encuentro una manera práctica de asiganar _ de una Base de datos a un LISTBOX, tengo el sigueinte código por ejemplo:

Code: Select all

   REDEFINE LISTBOX oBrwBusCli;
            FIELDS Cli->Cli_Cod, Cli->Cli_Nom, Cli->Cli_Tel, Cli->Cli_Te2, Cli->Cli_Dir, Cli->Cli_Pob;
            ID 1000 OF oDlgBusCli ALIAS "Cli"
 
y busco poder hacer algo como esto:

Code: Select all

   REDEFINE LISTBOX oBrwBusCli;
            FIELDS aFldDb; //Array, queda el crear una expresión en una variable por ejemplo &cFldDb
            ID 1000 OF oDlgBusCli ALIAS "Cli"
 
He echado un ojo a la clase Listbox.prg, pero no encuentro una manera práctica de hacerlo.
Seguramente sea algo fácil o trivial, pero no he encontrado nada similar por el foro.


Gracias y Saludos!
User avatar
Daniel Garcia-Gil
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita
Contact:

Re: Asignar campos a LISTBOX

Post by Daniel Garcia-Gil »

Triumvirato

De esa forma no lo podras hacer, el comando crea un codeblock (no un array ) con los "fields" a mostrar intentalo de esta forma:

Code: Select all

aFldDb = { Cli->Cli_Cod, Cli->Cli_Nom, Cli->Cli_Tel, Cli->Cli_Te2, Cli->Cli_Dir, Cli->Cli_Pob }

Code: Select all

  
  REDEFINE LISTBOX oBrwBusCli;
            FIELDS NIL; //Array, queda el crear una expresión en una variable por ejemplo &cFldDb
            ID 1000 OF oDlgBusCli ALIAS "Cli"
  
  oBrwBusCli:bLine = {|| aFldDb }
 

o de esta otra forma

Code: Select all

oBrwBusCli = TWBrowse():Redefine( 1000, {|| aFldDb }, oDlgBusCli,,,,,,,,,,,,,,,"Cli" )
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
User avatar
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Re: Asignar campos a LISTBOX

Post by Willi Quintana »

Te faltan asignar tamaños de columna:

Code: Select all


 REDEFINE LISTBOX oBrwBusCli;
            FIELDS Cli->Cli_Cod, Cli->Cli_Nom, Cli->Cli_Tel, Cli->Cli_Te2, Cli->Cli_Dir, Cli->Cli_Pob;
            HEADERS "Campo1", "Campo2", "Campo3",  "Campo4", "Campo5", "Campo6" ;
            SIZES 80,80,80,80,80,80 ;             
            ID 1000 OF oDlgBusCli 

 
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Re: Asignar campos a LISTBOX

Post by triumvirato »

Daniel,

Al hacerlo de cualquiera de los dos modos que propones, el Browse toma un registro de la base de datos aleatorio y lo repite en todos los registros del Browse...

Muchas gracias por tu ayuda.



Willi,

Cierto, me faltaban esas definiciones en mi código, pero en este caso las omití a propósito para simplificar al máximo posible mi ejemplo, siempre procuro hacerlo para que las respuestas de quien me ayuda puedan ser más concisas y sobre todo, no haceros perder mucho el tiempo leyendo mi código a aquellos que como tú me ayudáis. De ahí que intente siempre simplificar al máximo.
Por cierto, tu hijo ya va a hacer dos años? como crecen estos "enanos", parece que fué ayer, verdad?.
Muchísimas gracias por tu apunte, Willi.

Saludos!
triumvirato
Posts: 199
Joined: Tue Apr 22, 2008 9:54 am
Location: Valladolid, Spain.

Re: Asignar campos a LISTBOX

Post by triumvirato »

Daniel,

Al final lo he resuelto así, a falta de criterio solución mejor:

Code: Select all

aFldBrw := { "Cli_Cod", "Cli_Nom", "Cli_Tel", "Cli_Te2", "Cli_Dir", "Cli_Pob" }
cAlias := "Cli"

......


cFldBrw := ""
   for nVarFor = 1 to Len( aFldBrw )
       cFldBrw += cAlias + "->" + aFldBrw[ nVarFor ] + ", "
   next
   cFldBrw := SubStr( cFldBrw, 1, Len( cFldBrw ) - 2 )

  REDEFINE LISTBOX oBrwBusCli;
            FIELDS &cFldBrw;
            ID 1000 OF oDlgBusCli ALIAS "Cli"
  
 
Saludos.
Post Reply