Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problemas Access, DbImage - Objeto OLE (https://www.clubdelphi.com/foros/showthread.php?t=17892)

jsc 25-01-2005 10:21:25

Problemas Access, DbImage - Objeto OLE
 
Tengo problemas cuando trabajo con Access y objetos Ole.La cuestión es que estamos haciendo una aplicación tipo agenda con un campo ole en access, el cual guarda imagenes.Desde delphi se pretende ver esas imagenes guardadas en el campo ole de access a traves de un dbimage,pero tengo problemas ya que se muestra un mensaje indicando "Bitmap is not valid graphic".He visto en otros hilos que se hace referencia a una aplicación de ejemplo de delphi como es "fishfact.dpr", pero estoy en las mismas.he probado de todo y no consigo lo que queremos.El datasource y el datafield del dbimage los definimos correctamente pero nada.
en access hemos probado a guardar la imagen en diferentes formatos:.bmp,.jpg...
Espero que alguien pueda ayudarnos a resolver el problema - :confused:
muchas gracias

marcoszorrilla 25-01-2005 16:34:42

No tengo tiempo para ver si esto te puede servir evalualo y nos cuentas.
Código Delphi [-]
  campoblob.loadfromfile(archivo);
  
  
  para visualizarlas desde un campo blob lo hago con un TImage pq el TDBImage permite
  unicamente los bmp:
  Código:
  
  procedure TForm1.DataSourceDataChange(Sender: TObject; Field: TField);
  var bs : TStream; jp : TJpegImage; buff: Word;
  begin
  bs := DataSet.CreateBlobStream(CampoBlob,bmRead);
  try
  bs.Seek(0,soFromBeginning);
  if bs.Read(buff,2) > 0 then
  begin
  bs.Seek(0, soFromBeginning);
  case buff of
  $4D42: image1.Picture.Bitmap.LoadFromStream(bs);
  $0000: image1.Picture.Icon.LoadFromStream(bs);
  $0001,$CDD7: image1.Picture.Metafile.LoadFromStream(bs);
  $D8FF: begin
  jp := TJpegImage.Create;
  jp.LoadFromStream(bs);
  image1.Picture.Assign(jp);
  FreeAndNil(jp);
  end
  else image1.Picture := nil;
  end;
  end;
  finally
  FreeAndNil(bs);
  end;
  end;
Un saludo.

jsc 27-01-2005 10:35:49

Muchas gracias por la ayuda,pero algo estoy haciendo mal... no me funciona.He probado a definir [CampoBlob] como un TBlobField, TBlobStream... pero no me funciona.Por otro lado he probado también algo más sencillito que he visto por la ayuda
Cita:

procedure TForm1.Button1Click(Sender: TObject);
var
Stream1 : TBlobStream;
begin
Stream1 := TBlobStream.Create(Table1Foto, bmRead);
try
Image1.Picture.Bitmap.LoadFromStream(stream1);
finally
Stream1.Free;
end;
end;
pero aun y con esto también estoy igual.
¿A alguien se le ocurre, algo? No se qué hago mal. Agradecería mucho vuestra ayuda.
Un saludo

Delfino 27-01-2005 21:41:37

La solucion a este problema existe en este enlace http://delphi.about.com/od/database/l/aa030601b.htm q por cierto ya esta publicado en otros hilos (buscar antes de preguntar) ;)


La franja horaria es GMT +2. Ahora son las 21:54:38.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi