Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-11-2007
kakarotv5 kakarotv5 is offline
Miembro
 
Registrado: feb 2007
Posts: 162
Poder: 18
kakarotv5 Va por buen camino
SQLite 3 --> Capturar el contenido de los campos en una variable

Hola, necesito capturar el contenido de los campos de una base de datos SQLite en una variable de tipo string.

Si hago esto:

Código Delphi [-]
while not dsTest.EOF do
 begin
  DataToSend := DataToSend + 
  dsTest.FieldValues['Code'] + '\' +
  dsTest.FieldValues['Name'] + '\' + 
  dsTest.FieldValues['Address'] + '#';
  dsTest.Next;
 end;

Obtengo el siguiente mensaje de error:

Código:
Project raised exception class 'RunError(231)'.
Si hago esto entonces funciona:

Código Delphi [-]
while not dsTest.EOF do
 begin
  Cod := dsTest.FieldValues['Code'];
  Nam := dsTest.FieldValues['Name'];
  Addr := dsTest.FieldValues['Address'];
  DataToSend := DataToSend + Cod + '\' + Nam + '\' + Addr + '#';
  dsTest.Next;
 end;

Pero tengo que declarar tres variables de tipo string (Cod, Nam and Addr).

¿Alguien me ayuda?

Última edición por kakarotv5 fecha: 26-11-2007 a las 14:35:05.
Responder Con Cita
  #2  
Antiguo 26-11-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 21
basti Va por buen camino
Probablemente el error provenga de algún tipo de conversión automática de Variant con los operadores '+'.

Prueba con
Código Delphi [-]
      DataToSend := DataToSend + 
                             dsTest.FieldByName['Code'].AsString + '\' +
                             dsTest.FieldByName['Name'].AsString + '\' + 
                             dsTest.FieldByName['Address'].AsString + '#';
__________________
Saludos.
Responder Con Cita
  #3  
Antiguo 26-11-2007
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 276
Poder: 21
afxe Va por buen camino
FieldValues devuelve Variant.

El problema es que si accedes a la propiedad FieldValues de los campos obtienes un Variant, es decir un dato de tipo variable, que hasta que no sea usado no se define su tipo. Por eso te funciona cuando lo asignas a variables, porque la variable ya tiene tipo. Utiliza la propiedad FieldByName o los campos persistentes más el tipo de aceso que le quieras hacer: .AsInteger, .AsString, .AsDateTime....

oops.. veo que se me han adelantado en la respuesta.

Saludos-
Responder Con Cita
  #4  
Antiguo 26-11-2007
kakarotv5 kakarotv5 is offline
Miembro
 
Registrado: feb 2007
Posts: 162
Poder: 18
kakarotv5 Va por buen camino
Lo he cambiado por esto:

Código Delphi [-]
while not dsTest.EOF do
 begin
  DatosAEnviar := DatosAEnviar +
                        dsTest.FieldValues['Código'].AsString + '\' +
                        dsTest.FieldValues['Nombre'].AsString + '\' +
                        dsTest.FieldValues['Dirección'].AsString + '#';
  dsTest.Next;
 end;

y me da este error:

Código:
Project raised exception class 'EVariantInvalidOpError'
EDITO: Al final lo he solucionado así:

Código Delphi [-]
while not dsTest.EOF do
 begin
  DatosAEnviar := DatosAEnviar +
                         dsTest.FieldByName('Código').AsString + '\' +
                         dsTest.FieldByName('Nombre').AsString + '\' +
                         dsTest.FieldByName('Dirección').AsString + '#';
  dsTest.Next;
 end;

Por cierto, veo que sabeis de SQLite, yo no he encontrado mucha información al respecto de esta base de datos, ¿sabéis de algún buen manual?

Gracias a todos y un saludo.

Última edición por kakarotv5 fecha: 26-11-2007 a las 14:49:14.
Responder Con Cita
  #5  
Antiguo 27-11-2007
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 276
Poder: 21
afxe Va por buen camino
Particularmente no he trabajado con ella.

No he trabajado nunca con SQLite, lo que pasa es que tu duda era sobre el acceso a la clase TField de un TDataSource, y ese es un problema de uso de dichas clases, independientemente del motor de base de datos que elijas. Es decir, te hubiese pasado lo mismo si hubieras usado Firebird, Interbase, Paradox o Dbase.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
capturar el valor de una variable en una pagina web DISIMULA Internet 0 19-03-2007 19:34:31
Almacenar en una variable de session el contenido de un ListBox (Items)! JuanErasmo .NET 2 16-01-2007 22:13:32
Contenido de una select a una variable fjcg02 MS SQL Server 2 03-10-2005 22:23:13
Borrar el contenido de uno o mas campos karocs SQL 3 09-08-2004 10:18:13
Generar impreso con bandas de contenido variable falke01 Impresión 5 10-06-2004 13:37:44


La franja horaria es GMT +2. Ahora son las 19:50:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi