FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ¿Como puedo cambiar XBrowse sobre la marcha?
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
¿Como puedo cambiar XBrowse sobre la marcha?
Posted: Mon Nov 16, 2009 01:11 PM
Hola a todos!

Tengo el siguiente problema.
Me encuentro en un formulario con dos botones y un XBrowse.
Si pulso uno, me muestra la tabla 1 en el XBrowse, si pulso el otro, debería mostrarme
la tabla 2 en el XBrowse.

Aparentemente lo hace, peero ambas tablas tienen estructuras distintas.
Sin embargo, las columnas del XBrowse no cambian!!! :-) :-) :-)

Y no sé que hacer.


Code (fw): Select all Collapse
STATIC cStrSql1  := "SELECT nombre, apellidos FROM tabla1"
STATIC cStrSql2  := "SELECT parcela, edad FROM tabla2"

function Main()

REDEFINE XBROWSE oXbr ;
   RECSET oRs ID ID_BRW OF oDlg

// Ver tabla1
REDEFINE BTNBMP oBtn1 ID ID_BTN1 OF oDlg ;
   RESOURCE "BTN1" ;
   ACTION ( oRs:Close(),;
            oRs:Source := cStrSql1,;
            oRs:Open(),;
            oXbr:Refresh() )

// Ver tabla2
REDEFINE BTNBMP oBtn2 ID ID_BTN2 OF oDlg ;
   RESOURCE "BTN2" ;
   ACTION ( oRs:Close(),;
            oRs:Source := cStrSql2,;
            oRs:Open(),;
            oXbr:Refresh() )
Javier,

FWH 8.04 2008
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: ¿Como puedo cambiar XBrowse sobre la marcha?
Posted: Mon Nov 16, 2009 01:53 PM

Saludos, tienes los xBrw en funciones diferentes.?, si es asi con llamar las funciones deberia de hacerte el cambio, por lo menos asi lo hago yo, recuerda que debes construir el xbrw con las columnas que quieres mostrar, igual poner 1 poco mas de codigo de como estas tratando de mostrar los xbrw seria bueno para ayudarte un poco mas, si alguien tiene una mejor solucion se que la ofrecera, saludos... :shock:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Re: ¿Como puedo cambiar XBrowse sobre la marcha?
Posted: Mon Nov 16, 2009 05:38 PM

Gracias por contestar Jose Luis,

¿podrías facilitarme un ejemplo de cómo lo haces tú?

No entiendo muy bien lo de las funciones.

Gracias y un saludo.
Javier.

Javier,

FWH 8.04 2008
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: ¿Como puedo cambiar XBrowse sobre la marcha?
Posted: Mon Nov 16, 2009 06:11 PM
jfafive wrote:Gracias por contestar Jose Luis,

¿podrías facilitarme un ejemplo de cómo lo haces tú?

No entiendo muy bien lo de las funciones.

Gracias y un saludo.
Javier.

Coloca un correo y con gusto te lo envio a tu privado o contactame por mi msn... saludos... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 396
Joined: Tue Mar 18, 2008 09:41 PM
Re: ¿Como puedo cambiar XBrowse sobre la marcha?
Posted: Mon Nov 16, 2009 09:02 PM

Aquí tiens mi correo:

jfa_y@yahoo.com

Saludos.

Javier,

FWH 8.04 2008
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Re: ¿Como puedo cambiar XBrowse sobre la marcha?
Posted: Wed Nov 18, 2009 08:19 PM

JfaFive...

Es mas sencilo...
Antes del oBrw:Refresh()
pon un oBrw:SetAdo(oRcs, .T., .T.)

Prueba y me comentas
Saludos

Desde Chile
Adolfo

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: ¿Como puedo cambiar XBrowse sobre la marcha?
Posted: Wed Nov 18, 2009 09:38 PM
This is a working sample ( Compatible with FWH 8.04 ):
Code (fw): Select all Collapse
#include 'fivewin.ch'
#include 'xbrowse.ch'

static nSelect := 1

function Main()

   local oDlg, oBrw1, oBrw2, oRs1, oRs2, oCn

   XBrNumFormat( 'E', .t. )

   oCn   := TOleAuto():New( 'ADODB.Connection' )
   // Set correct path for fwh folder
   oCn:Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ;
             "c:\fwh\samples\xbrtest.mdb;User Id=admin;Password=;" )

   if oCn:State < 1
      MsgInfo( 'Connection Fail' )
      return ( 1 )
   endif

   oRs1  := TOleAuto():New( 'ADODB.RecordSet' )
   WITH OBJECT oRs1
      :ActiveConnection := oCn
      :Source           := 'SELECT FIRST,CITY,AGE FROM CUSTOMER'
      :CursorLocation   := 3  // adUseClient
      :Open()
   END

   oRs2  := TOleAuto():New( 'ADODB.RecordSet' )
   WITH OBJECT oRs2
      :ActiveConnection := oCn
      :Source           := 'SELECT LAST,SALARY FROM CUSTOMER'
      :CursorLocation   := 3  // adUseClient
      :Open()
   END

   DEFINE DIALOG oDlg SIZE 540,360 PIXEL TITLE 'XBrowse Swap on the Fly'

   @ 10,10 XBROWSE oBrw2 OF oDlg SIZE 250,150 PIXEL ;
      AUTOCOLS RECSET oRs2 AUTOSORT

   WITH OBJECT oBrw2
      :nStretchCol   := 1
      :CreateFromCode()
      :Hide()
      :Disable()
   END

   @ 10,10 XBROWSE oBrw1 OF oDlg SIZE 250,150 PIXEL ;
      AUTOCOLS RECSET oRs1 AUTOSORT

   oBrw1:nStretchCol := 2
   oBrw1:CreateFromCode()

   @ 165, 10 BUTTON 'Brw-1' SIZE 40,12 PIXEL OF oDlg ;
      WHEN nSelect == 2 ACTION SwapBrw( { oBrw1, oBrw2 }, 1 )

   @ 165, 60 BUTTON 'Brw-2' SIZE 40,12 PIXEL OF oDlg ;
      WHEN nSelect == 1 ACTION SwapBrw( { oBrw1, oBrw2 }, 2 )

   @ 165,220 BUTTON 'Close' SIZE 40,12 PIXEL OF oDlg ACTION oDlg:End()

   ACTIVATE DIALOG oDlg CENTERED

   oRs1:Close()
   oRs2:Close()
   oCn:Close()

return nil

static function SwapBrw( aBrw, nShow )

   local nHide := nXor( nShow, 3 )

   WITH OBJECT aBrw[ nHide ]
      :Hide()
      :Disable()
   END

   WITH OBJECT aBrw[ nShow ]
      :Enable()
      :Show()
   END

   nSelect  := nShow
   aBrw[ 1 ]:oWnd:aEvalWhen()

return nil
Regards



G. N. Rao.

Hyderabad, India

Continue the discussion