PDA

Ver la Versión Completa : Problemas Access, DbImage - Objeto OLE


jsc
25-01-2005, 10:21:25
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.

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
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) ;)