Amigo buenos días como estas?
Creo que este ejemplo te puede servir, basado en xbrado.prg en la carpeta de samples
/*
*
* XbrADO.Prg
* 03-01-2011 07:58 PM
*
*/
#include "FiveWin.Ch"
#include "adodef.ch"
#include "ord.ch"
#include "xbrowse.ch"
//----------------------------------------------------------------------------//
REQUEST DBFCDX
static oCon
//----------------------------------------------------------------------------//
function Main()
local oDlg, oBrw, oFont
local oRs
DEFINE FONT oFont NAME 'TAHOMA' SIZE 0,-12
DEFINE DIALOG oDlg SIZE 900,500 PIXEL FONT oFont
oRs := GetRecSet()
@ 20,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
COLUMNS "FIRST - (' ' + LAST)", ;
'City','Salary', ;
'Round( ( DATE()-HIREDATE ) / 365, 0 )', ;
"SALARY * 1.1" ;
HEADERs "Name", nil, nil, 'Experience', 'RevdSal' ;
DATASOURCE oRs ;
CELL LINES NOBORDER FOOTERS
WITH OBJECT oBrw
:Salary:nFooterType := ;
:RevdSal:nFooterType := AGGR_SUM
:RevdSal:cEditPicture := NumPict( 12, 2 )
:Experience:cEditPicture := "999 Yrs"
:Experience:nFooterTypE := AGGR_AVG
:nStretchCol := 1
:MakeTotals()
:lAutoSort := .t.
:lIncrFilter := .t.
:lSeekWild := .t.
:cFilterFld := "FIRST"
END
oBrw:CreateFromCode()
@ 10,10 SAY oBrw:oSeek PROMPT alltrim(oBrw:cSeek) SIZE 150,10 PIXEL OF oDlg
ACTIVATE DIALOG oDlg CENTERED
RELEASE FONT oFont
oCon:Close()
return (0)
//----------------------------------------------------------------------------//
init procedure PrgInit
SET DATE ITALIAN
SET CENTURY ON
SET TIME FORMAT TO "HH:MM:SS"
SET EPOCH TO YEAR(DATE())-50
SET DELETED ON
SET EXCLUSIVE OFF
RDDSETDEFAULT( "DBFCDX" )
XbrNumFormat( 'I', .t. )
SetGetColorFocus()
return
//----------------------------------------------------------------------------//
static function ConnectToAccess
local oCat, aTables, n
local lConnect := .f.
local cStr := "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ;
cFilePath( hb_argv( 0 ) ) + "xbrtest.mdb;User Id=admin;Password=;"
if oCon == nil
oCon := TOleAuto():new("ADODB.Connection")
oCon:ConnectionString := cStr
TRY
oCon:Open()
lConnect := .t.
CATCH
oCon := nil
MsgInfo('Connect Fail')
return nil
END
else
lConnect := .t.
endif
return lConnect
//----------------------------------------------------------------------------//
static function GetRecSet
static oRs
local oRecSet
ConnectToAccess()
if oCon != nil .and. oRs == nil
oRs := TOleAuto():new( "ADODB.RecordSet" )
oRs:ActiveConnection := oCon
oRs:Source := 'CUSTOMER'
oRs:LockType := 4 // adLockOptimistic
oRs:CursorLocation := 3 //adUseClient
oRs:CacheSize := 100
TRY
oRs:Open()
CATCH
MsgInfo('Access Table Open Failure')
return nil
END
endif
oRecSet := oRs:Clone()
if oRs:RecordCount() > 0
oRecSet:Sort := oRecSet:Fields(0):Name
oRecSet:MoveFirst()
endif
return oRecSet
//-------------------------------------------------------------------------//