Hola. Muchas gracias por su rápida respuesta. Yo había probado con un código parecido a ese y no me funciono. Volví a probar con ese y tampoco me funciono pero quizás es por mi ignorancia respecto a la configuración de los parámetros.
Sin embargo tengo colegas que me han asegurado que el código que me muestras les ha funcionado con Delphi y otros componentes distintos a ZEOS.
Yo estoy trabajando con Lazarus y con Zeos.
Por suerte encontré otra forma también de hacerlo las cual les pongo debajo.
Código Delphi
[-]
Procedure TForm1.ButtonCargarImagenEnBBDDClick(Sender: TObject);
var
fs : TFileStream ;
blob: Tstream;
begin
if odpict.Execute
then Begin
DM.ztbBioLife.Edit;
blob := DM.ztbBioLife.CreateBlobStream(DM.ztbBioLife.FieldByName('graphic'), bmWrite);
try
blob.Seek(0, soFromBeginning);
fs := TFileStream.Create(odpict.FileName, fmOpenRead or fmShareDenyWrite);
try
blob.CopyFrom(fs, fs.Size);
finally
fs.Free
end;
finally
blob.Free
End;
end;
End;
Procedure TForm1.DBGrid2SelectEditor(Sender: TObject; Column: TColumn;
Var Editor: TWinControl);
var
blob: TStream;
Begin
blob := DM.ztbBioLife.CreateBlobStream(DM.ztbBioLife.FieldByName('graphic'), bmRead);
blob.Seek(0, soFromBeginning);
try
Image2.Picture.LoadFromStreamWithFileExt(blob, '.jpg');
Image2.Update;
finally
blob.Free;
Image2.Update;
end;
end;
Lo anterior fue probado con FireBird. Quiero ver si con postgressql funciona también, pero no encontre el tipo de campo BLob en Posgresql. Tengo que averiguar aun cual es el equivalente.
El ejemplo anterior supone que fue insertado el registro con anterioridad y que después se le va a insertar la imagen en el campo adecuado.
Muchas gracias por todo.
JCarlos