Page 1 of 1

Imagen en XBrowse con RecordSet

Posted: Tue May 26, 2009 4:54 pm
by jfafive
Hola Amigos,

Tengo un problema con mi XBrowse.
Resulta que cuando intento asignarle una imagen a una columna, no hace nada (bueno en realidad sale un signo como una barra del SHIFT-7)

Lo cierto, es que me está dando problemas desde que intento poner imagenes a un XBrowse vinculado a un RecordSet.
Trabajando con SQL Server.

Tengo otras aplicaciones donde trabajaba con un XBrowse vinculado a un ARRAY y con base de datos DBF y nunca me dió problema con las imagenes.

Si alguien ha conseguido poner una imagen al XBrowse con recordset, le agradecería me diese alguna pista.

Aquí les muestro mi código:

Gracias.

Code: Select all


....
REDEFINE XBROWSE oXbr_Usr ;
   RECSET oRs ID ID_USR_XBRW OF oDlg AUTOSORT 
....

ACTIVATE DIALOG oDlg NOWAIT ;
   ON INIT ( oXbr_Usr:aCols[2]:cHeader := "Activo",;
             oXbr_Usr:aCols[3]:cHeader := "Usuario",;
             oXbr_Usr:aCols[4]:cHeader := "Password",;
             oXbr_Usr:aCols[2]:AddResource( "yes" ),;
             oXbr_Usr:aCols[2]:AddResource( "no" ),;
             oXbr_Usr:aCols[2]:bBmpData := { || 2 },; // Asigno el bitmap "no" por defecto
             oXbr_Usr:aCols[2]:bStrData := { || Iif( oRs:Fields( "campoLogico" ):Value, "Si", "No" ) },; // Asigno si o no
             oXbr_Usr:aCols[2]:bEditValue := { || .t. } )
   
 

Re: Imagen en XBrowse con RecordSet

Posted: Tue May 26, 2009 7:27 pm
by mchumpitazv
Hola Javier

¿tu campo "campologico" esta definido como de tipo bit en tu tabla SQL?

Tal vez podria forzar la consulta cambiando
oXbr_Usr:aCols[2]:bStrData := { || Iif( oRs:Fields( "campoLogico" ):Value, "Si", "No" ) },; // Asigno si o no

por

oXbr_Usr:aCols[2]:bStrData := { || Iif( oRs:Fields( "campoLogico" ):Value=.t., "Si", "No" ) },; // Asigno si o no

Saludos

Luis

Re: Imagen en XBrowse con RecordSet

Posted: Wed May 27, 2009 10:42 am
by jfafive
Hola Luis,

Pues efectivamente, tnego definido el campo logico como tipo 'bit' en mi tabla SQL Server.

Probaré tu sugerencia, a ver si da buen resultado.

Ya te comentaré como me ha ido.
Gracias. :wink:

Re: Imagen en XBrowse con RecordSet

Posted: Wed May 27, 2009 11:10 am
by jfafive
Hola de nuevo!

Ya lo probé.
Pero sigue sin dar resultado.

En realidad, esta linea de código

Code: Select all

oXbr_Usr:aCols[2]:bStrData := { || Iif( oRs:Fields( "campoLogico" ):Value=.t., "Si", "No" ) },; // Asigno si o no
 
No tiene que ver con los bitmaps, ya que lo único que hace es substituir el valor que se vé po defecto .T. o .F. por el literal "Si" o "No".

Las lineas que deberían poner el bitmap, son:

Code: Select all

oXbr_Usr:aCols[2]:AddResource( "yes" ),; // añadimos el bitmap yes
oXbr_Usr:aCols[2]:AddResource( "no" ),;  // añadimos el bitmap no
oXbr_Usr:aCols[2]:bBmpData := { || 2 },; // le decimos que muestre el segundo, es decir, "no"
 
Pero no funciona! :cry: :cry: :cry:

Re: Imagen en XBrowse con RecordSet

Posted: Thu May 28, 2009 5:29 am
by anserkk
Dear Mr.Javier,

Code: Select all

// Alternative way to display BMP, if multiple conditions and more than 2 bitmaps are there
oBrwMenu:aCols[2]:AddResource("CheckOn")
oBrwMenu:aCols[2]:AddResource("CheckOff")

// Checkbox should be displayed only if the menu type is not a Submenu
oBrwMenu:aCols[2]:bBmpData :={ || iif(oBrwMenu:aArrayData[oBrwMenu:nArrayAt][4],0,iif(oBrwMenu:aArrayData[oBrwMenu:nArrayAt][3],1,2))  }
 
I am reading the recordset values to an array and then the array is used in xBrowse. The above code is working fine for me. I think your problem is with the management of .T. .F. from recordset and how FWH interpret the Logical value from the recordset. Are you sure that the your recordset field type is BIT ?

Regards

Anser

Re: Imagen en XBrowse con RecordSet

Posted: Thu May 28, 2009 9:07 am
by jfafive
Dear anserkk ,

Yes! My logical fields from SQL Server database is a bit type.

I'm trying to do the same like you. But widtout using array. So working directly with
the XBrowse RecordSet.
I have code samples of old applications that use an array with Xbrowse and it does works very fine.

So i think that finnally i'll back to use arrays at my Xbrowse.
Charging first the recordset values to the Xbrowse array.... i suppous ....

Any way, thank you.
Javier.

Re: Imagen en XBrowse con RecordSet

Posted: Thu May 28, 2009 4:23 pm
by jfafive
Hola de nuevo!

Al final, pude hacer un XBrowse de RecordSet que muestra imagenes.
:P :P :P

Al parecer, todo estaba bien.
Lo único es que el AUTOSORT parecía molestarle.
En cuanto lo he quitdao, ya muestra las imagenes.

Dejo el código por si a alguien le biene bien saberlo.

Un saludo.
:lol:

Code: Select all

REDEFINE XBROWSE oXbr_Usr ;
   RECSET oRs ID ID_USR_XBRW OF oDlg  // AUTOSORT
......
ACTIVATE DIALOG oDlg NOWAIT ;
   ON INIT ( oXbr_Usr:aCols[1]:cHeader := "Activo",;
             oXbr_Usr:aCols[2]:cHeader := "Usuario",;
             oXbr_Usr:aCols[3]:cHeader := "Password",;
             oXbr_Usr:aCols[1]:AddResource( "on" ),;
             oXbr_Usr:aCols[1]:AddResource( "off" ),;
             oXbr_Usr:aCols[1]:bBmpData := ;
                    { || Iif( oRs:Fields( "activo" ):Value, 1, 2 ) },;
             oXbr_Usr:aCols[2]:bStrData := ;
                { || Iif( oRs:Fields( "activo" ):Value, "si", "no" ) } )