Ver Mensaje Individual
  #1  
Antiguo 13-12-2007
Avatar de thelibmx
thelibmx thelibmx is offline
Miembro
 
Registrado: mar 2007
Posts: 515
Reputación: 18
thelibmx Va por buen camino
Question insertar un archivo en un campo blob desde delphi

hola amigos yo se que muchos tal ves se molesten y digan que busque en los hilos pero en verdad que estuve buscando y no encontre mucho que me pueda ayudar o mas bien, me falta un poco de conocimiento, asi que recurro a ustedes, lo que quiero hacer es subir un archivo a una base de datos que es postgre(<-no se espanten no es cosa del otro mundo) digamos que en vez de postgre dije mysql el procedimiento es similar(muchos temen al coco postgre), tengo delphi2006, tengo un tdatabase y un tquery se insertar informacion a la base de datos, lo que no me queda claro es como insertar el archivo en el campo tipo blob, cuando digo el archivo puede ser de diferentes tipos, pdf,doc,ppt,xls, etc.

En teoria cuando doy click en el boton ,se abre el opendialog y selecciono el archivo que se pretende subir a la base de datos, la base de datos se llama "basedatosprueba" y la tabla adonde van los archivos se llama "tabla_prueba", esta tiene tres campos que son, llave(integer),nombre(character) y archivoblob(blob)

este es parte del codigo que utilizo, lo que no se es como insertar el archivo dentro del campo, puedo insertar en los demas campos informacion pero el archivo en el blob no, seria de mucha ayuda si alguien me explicara un poco como es que se hace,


Código Delphi [-]
procedure TFrmenuu.BitBtn1Click(Sender: TObject);
var
blob:TStream;
fs:tstream;
begin
if OpenDialog.Execute then
begin
Olecontainer1.CreateObjectFromFile(PChar(OpenDialog.FileName),false);
vertbar.max:= Olecontainer1.Height;
horzbar.max:= Olecontainer1.Height;
Panelcontenedor.Visible:=true;
Querygestion.Close;
Querygestion.SQL.Clear;
Querygestion.SQL.Add('insert into tabla_prueba(llave,nombre,archivoblob) values(006,'1',blob)');
Querygestion.ExecSQL;
Querygestion.Open;
showmessage('agregado');
blob := Querygestion.CreateBlobStream(Querygestion.FieldByName('archivoblob'),bmWrite);
try
blob.Seek(0, soFromBeginning);
fs := TFileStream.Create(OpenDialog.FileName, fmOpenRead or fmShareDenyWrite);
   try
      blob.CopyFrom(fs, fs.Size)
    finally
      fs.Free
    end;
  finally
    blob.Free
  end;

end;
end;

Les agradezco su atencion y su ayuda, cualquier duda o sugerencia es bienvenida
__________________
En movimiento...
Responder Con Cita