Fecha actual Mié Jun 26, 2024 12:57 pm

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 4 mensajes ] 
Autor Mensaje
 Asunto: OLE + ADO
NotaPublicado: Vie Ene 27, 2006 5:47 pm 
Avatar de Usuario

Registrado: Lun Oct 17, 2005 4:38 am
Mensajes: 74
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


Arriba
 Perfil  
Responder citando  
 Asunto: Re: OLE + ADO
NotaPublicado: Vie Ene 27, 2006 6:08 pm 
Site Admin
Avatar de Usuario

Registrado: Jue Oct 06, 2005 10:49 pm
Mensajes: 655
Ubicación: España - Salamanca
Jorge,

La case TStringGrid muestra cadenas.

aData := {}

while !oTable:eof()
AADD( aData , { oTable:Fields( "First" ):Value, ;
Str( oTable:Fields( "Age" ):Value ), ;
DToC( oTable:Fields( "HireDate" ):Value ), ;
If( oTable:Fields( "Married" ):Value, ".T.", ".F." ) } )
oTable:MoveNext()
end

_________________
Un saludo,
Bruno Cantero
www.c3compiler.com


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Vie Ene 27, 2006 10:32 pm 
Avatar de Usuario

Registrado: Lun Oct 17, 2005 4:38 am
Mensajes: 74
Estimado Bruno

El valor que obtengo del objeto OLE no es un número ni fecha, no lo puedo manejar.

Saludos
Jorge Mason


Arriba
 Perfil  
Responder citando  
 Asunto: Ya lo pillé
NotaPublicado: Vie Ene 27, 2006 10:42 pm 
Avatar de Usuario

Registrado: Lun Oct 17, 2005 4:38 am
Mensajes: 74
Bruno,

Al parecer el problema es con algunos tipos de datos, estoy probando con POSTGRESQL

Los campos definidos con

float4
timestamp
numeric

No se ven, sin embargo otros definidos como varchar, date, int4 si se ven.

Insisto en que he probado con OLE de FW con Harbour y ahí se ven todos.

NOTA: Ya tengo andando la clase DBGRID con OLE, solo que algunos campos no los veo correctamente !

Saludos y muchas gracias de antemano
Saludos


Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 4 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Buscar:
Saltar a:  
cron