From: | "Joan Manuel Ventura Felix" <joanmvf(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Guardar Imagen en campo Blob |
Date: | 2007-03-30 23:46:32 |
Message-ID: | 7406ea9c0703301646r3be26ff8q834205592a998d29@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola a todos, estoy utilizando delphi7 con postgresql 8.2, como puedo hacer
para que delphi me guarde una imagen en mi tabla de postgres, yo tengo el
siguiente codigo ke encontre en una pagina, pero no me funciona
esto lo tengo dentro del boton buscar foto, en la tabla tengo el campo foto
tipo blob, y un campo llamado ext, para guardar la extension. yo tengo otro
boton de guardar ke es donde hago el post, todo esta, bien solo es que no le
asigna la imagen al campo blob, pero si captura la extension de la imagen,
alquien que me ayude.
procedure Tin_actores.Button1Click(Sender: TObject);
var
m, f: TStream;
s: string;
begin
if OpenPictureDialog1.Execute then
begin
m:= ds.DataSet.CreateBlobStream(ds.DataSet.FieldByName('foto'),bmWrite);
f:= TFileStream.Create(OpenPictureDialog1.filename, fmOpenRead);
//esta sentencia es la que no me funciona.
m.CopyFrom(f, f.Size);
s:= AnsiUpperCase(ExtractFileExt(OpenPictureDialog1.FileName));
//Siempre en mayusculas
if s='.JPEG' then s:= '.JPG'; //un caso especial
ds.DataSet.FieldByName('ext').AsString:= Copy(s,2,3); //elimino el punto
end;
end;
y este es el condigo del Data source en datachange para que mueste la imagen
en el Timage
procedure Tin_actores.dsDataChange(Sender: TObject; Field: TField);
var
m: TStream;
begin
if ds.DataSet.FieldByName('foto').IsNull then
foto.Picture:= nil
else
begin
if ds.DataSet.FieldByName('ext').AsString = 'BMP' then
foto.Picture.Graphic:= TBitmap.Create
else if ds.DataSet.FieldByName('ext').AsString = 'JPG' then
foto.Picture.Graphic:= TJpegImage.Create
{else if ds.DataSet.FieldByName('ext').AsString='GIF' then
foto.Picture.Graphic:= TGIFImage.Create }
else
Exit;
m:= ds.DataSet.CreateBlobStream(ds.DataSet.FieldByName('foto'), bmRead);
foto.Picture.Graphic.LoadFromStream(m);
end;
end;
este es el codigo que tengo pero no me funciona
From | Date | Subject | |
---|---|---|---|
Next Message | Juan Martínez | 2007-03-31 08:46:45 | Re: Sentencia SQL para dos registros por grupo |
Previous Message | Daniel Hernandez | 2007-03-30 22:52:03 | RE: .NET y PostgreSQL |