PDA

Ver la Versión Completa : Recuperación de campo long raw


daviniagh
21-08-2006, 22:17:09
Hola, mi problema es el siguiente: en la bd oracle tengo un campo long raw que contiene ficheros doc, pdf.... necesito poder rescatar esos ficheros desde delphi guardándolos en el disco duro y además abriéndolos con la aplicación correspondiente (word, adobe...). Hasta ahora he conseguido que me cree el archivo donde quiero y con el nombre y extensión con el que se guardó originalmente en la bd, pero no se almacena correctamente, el fichero creado siempre tiene 2kb de tamaño y no se visualiza.

El código que tengo es algo así:


blob: TBlobStream;
fich:TFileStream;
nombre_fichero, nombre, extension: string;
fichero :TMemoryStream;

begin
SPFichero.Close;
SPFichero.ParamByName('V_ID').AsInteger:=p_id;
SPFichero.Open;
nombre:= SPFicheroNOMBRE_FICHERO.AsString;
extension:= SPFicheroEXTENSION_FICHERO.AsString;
nombre_fichero:= 'C:/'+ nombre + '.'+ extension;

blob := TBlobStream.Create(SPFichero.FieldByName('FICHERO') as TBlobField,bmRead);

try
blob.Seek(0, soFromBeginning);

with TFileStream.Create (nombre_fichero, fmCreate) do
try
CopyFrom(blob, blob.Size)
finally
Free
end;
finally
blob.Free
end;



Si alguien detecta que me falta o falla algo... gracias de antemano... :)