PDA

Ver la Versión Completa : extraer de un campo blob a fichero


Intelinside
22-07-2010, 12:35:35
Hola, soy un novato con delphi ya que es la primera vez que trabajo con este, lo que estoy intentando hacer es:

Sacar de un campo blob de la BD una fotografia para posteriormente guardarla en un fichero en el disco duro (las fotos todas seran jpg).

Hasta ahora he realizado este código:


Código Delphi

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Odbc;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
end;
var
Form1: TForm1;
implementation

procedure TForm1.Button1Click(Sender: TObject);
var
DBprueba: TODBCDatabase;
QBuscar: TODBCQuery;
cadena1: String;
fileData : TStringList;

begin
fileData := TStringList.Create;


DBprueba.Params:='FILEDSN=./conectar.dsn;PWD=1';
DBprueba.Connect;
QBuscar:=TODBCQuery.Create;
cadena1:= ('Select foto from persona where (nombre = "David")');
QBuscar.Sql:= cadena1;
Label1.caption :=cadena1;
QBuscar.Execute;

Label2.caption:=QBuscar.Execute;
fileData.Text:=QBuscar.Execute;
Label3.caption:=fileData.Text;
fileData.savetofile('c:\prueba.jpg');
end;
{$R *.DFM}
end.





El problema le tengo cuando intento crear el fichero

fileData.Text:=QBuscar.Execute;

para posteriormente salvarlo en el disco duro.

El error que me genera es que no puedo almacenar en string el procedimiento de la consulta sql y no se como he de tratarla para almacenar los caracteres en un fichero para posteriormente renombrarlo a jpg y que se quede la foto guardada.

Un saludo y gracias de antemano por vuestra ayuda.

Edito Se me olvido mencionar trabajo con una versión de delphi bastante antigua la 2.0.

manuc
23-07-2010, 17:43:12
Hola Intelinside,

No he trabajado nunca con un TODBCQuery, pero prueba a hacer esto:


tblobField(QBuscar.fieldbyname('foto')).SaveToFile('c:\prueba.jpg');


Lo que no puedes hacer es almacenar es el contenido de un campo blob binario en un TStringList. Un TStringList no es más que un array de String y ahí no puedes almacenar un fichero binario (jpg).

Con el código que te he puesto arriba, guardas directamente el contenido del campo blob en un fichero en disco.

Espero que te ayude.

Un saludo.