Bruno,
Definitivamente con OLE + ADO no logro recuperar ningún dato que no sea String
El siguiente ejemplo lo demuestra claramente :
METHOD Form1OnCreate( oSender ) CLASS TForm1
local oAccess, oTable, aData, oGrid, oDlg
oDlg := MessageDlg( "Cargando datos...", mtCustom )
/* Conectamos con Access. */
/*
oAccess := TOleContainer():Create( "Access.Application" )
oAccess:Visible := .F.
oAccess:OpenCurrentDatabase := CurDrive() + ":\" + CurDir() + "\Test.mdb"
oTable := oAccess:CurrentDb:OpenRecordSet( "Tabla1" )
*/
oAccess := TOleContainer():Create( "ADODB.Connection" )
oAccess:Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb")
oTable := TOleContainer():Create("ADODB.recordset")
oTable:Open("Select * from tabla1", oAccess)
/* Cargamos los registros. */
aData := {}
while !oTable:eof()
AADD( aData , { oTable:Fields( "First" ):Value, ;
oTable:Fields( "Age" ):Value, ;
oTable:Fields( "HireDate" ):Value, ;
oTable:Fields( "Married" ):Value } )
oTable:MoveNext()
end
/* Cerramos y destruímos. */
/*
oAccess:CloseCurrentDatabase()
oAccess:Quit()
oAccess:Destroy()
*/
/* Creamos el grid. */
oGrid := TStringGrid():Create( Self )
oGrid:SetBounds( 10, 10, 530, 400 )
oGrid:Header := { "First", "Age", "HireDate", "Married" }
oGrid:Sizes := { 150, 150, 100, 120 }
oGrid:Items := aData
oDlg:Destroy()
return
Saludos
Jorge Mason
|