Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   No puedo coger la información de un campo BLOB (https://www.clubdelphi.com/foros/showthread.php?t=44071)

fonx 28-05-2007 12:44:30

No puedo coger la información de un campo BLOB
 
Hola, he buscado post anteriores pero ninguno me ha ayudado en lo que necesito. Uso Delphi5 y MySQL, y quiero cargar registros de la base de datos que contienen 3 campos: date, smallint, blob. El blob tiene texto, con formato supongo pq tiene marcas de parrafo.

En la select si selecciono solo el date y el smallint me coge bien los registros pero si hago un select * no me coge ninguno, el recordcount me devuelve -1. Este es el código que uso:

procedure TFGenScripts.btValnotasClick(Sender: TObject);
var
i:integer;
fecha, blob: string;

begin
script.Clear;
label2.caption :='';
primera:= true;
SQLQuery.ClearSQL;
SQLQuery.SQL.Add('select * from valnotas order by FECHA_NT asc,EST_NT asc');
SQLQuery.ExecSQL;
if SQLQuery.RecordCount > 0 then
begin
SQLQuery.Dataset.First;
while not SQLQuery.Dataset.Eof do
begin

// el código de aquí no es relevante, simplemente trato los registros.
// en principio me interesa poder coger el blob de la base de datos,
// luego el procesarlo será otro cantar.

end;
end;
label2.caption :='Proceso finalizado';
end;

Gracias de antemano por las respuestas, un saludo

ArdiIIa 28-05-2007 12:53:29

Hola Fonx, Prueba :

Código Delphi [-]
procedure TFGenScripts.btValnotasClick(Sender: TObject);
var
    i:integer;
    fecha, blob: string;

begin
    script.Clear;
    label2.caption :='';
    primera:= true;
    SQLQuery.ClearSQL;
    SQLQuery.SQL.Add('select * from valnotas order by FECHA_NT ,EST_NT');
    SQLQuery.OPEN;
end;


RecordCount no es funcional en este tipo de base de datos.

Si quieres asegurarte que tienes contenido en ese Query, puede hacerlo relalizando previamente un
Select Count(*) ..... where xxx
que te devolverá el número de registros que cumplen la condición.

fonx 28-05-2007 13:01:05

Gracias Ardilla pero no es el problema. La conexión ya esta abierta, y si hago esto:

'select FECHA_NT ,EST_NT from valnotas order by FECHA_NT ,EST_NT'

me coge todos los registros que quiero, pero si hago el select * no me coge ninguno, por lo que el problema lo tengo con el tipo de dato BLOB :confused:

ArdiIIa 28-05-2007 13:20:27

Lo siento fonx, no acabo de comprender esto:

Quieres decir que esto SI funciona:
Código SQL [-]
select FECHA_NT ,EST_NT from valnotas

Y que esto otro NO funciona:
Código SQL [-]
select * from valnotas

Si es así, no veo cual puede ser el problema....

fonx 28-05-2007 13:44:11

Así es, con el select *, cogiendo el date, el smallint y el blob no funciona :confused:, no se, preguntaré a algún compañero de aquí del trabajo a ver si alguien sabe algo...

Puede que sea porque el SQLQuery es una instancia de una clase (TIABDatos) que igual no es una clase estandar del delphi5 sino que ha sido programada por alquien y puede que por eso choca con el tipo blob.

fonx 28-05-2007 16:20:10

bueno, di con ello, así que no hago perder más el tiempo a nadie :)

El tema es que el recordcount no funciona bien, por lo que lo quité y me quedo solo con

while not SQLQuery.Dataset.Eof do
begin
....
end

Como comenté antes, estoy utilizando una librería para el acceso a datos que hizo un programador de donde estoy ahora, quizás en esa parte del recordcount hay algún tipo de bug, porque me devolvía -1 y sin embargo si hay información en el dataset. Gracias por todo y un saludo :)

ramiretor 31-05-2007 20:34:49

Hola:
Bueno es que no es problema de lo que el programador anterior hizo, yo te comento que hace tiempo use la combinación BDE - Oracle y ultimamente BDE - DB2 y fue los mismo, lo que hago regularmente es:

Código Delphi [-]

 qry.Open;
 qry.Last;
 qry.RecordCount;

Y con eso recupero el número de registros que trae el Set de datos, solo que hacerlo asi trae una consecuencia grave, si el número de registros es grande, llamar al Last es estropear el programa.

Por último te comento que he trabajado con componentes DBExpress para las mismas bases de datos y funciona como originalmente lo tienes

Saludos


La franja horaria es GMT +2. Ahora son las 15:51:15.

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