PDA

Ver la Versión Completa : TImage en Access


Kamael
30-03-2008, 13:38:19
Estoy haciendo una aplicacion en al que tengo que almacenar una forografia en un campo de tipo 'objeto ole' en 'Access'.
El problema que tengo es que no tengo ni idea de como cargar la foto en el la base de datos.
Utilizo ADO por si sirve de algo.
Tampoco tengo claro que el tipo de campo para cargar la foto sea 'Ole', y utilizo el componente 'TImage'.
Gracias anticipadas

Caral
30-03-2008, 14:50:35
Hola
Codigo de cHackAll:
Guardar:

procedure TForm1.Button1Click(Sender: TObject);
var bmp: TBitmap; Stream: TStream;
begin
if not OpenDialog1.Execute then Exit;

bmp := TBitmap.Create; // Creamos el objeto que "entiende" al Bitmap
bmp.LoadFromFile(OpenDialog1.FileName); // cargamos la imagen
jpg.Assign(bmp); // signamos la imagen BMP al objeto del JPEG
bmp.Destroy; // y liberamos el objeto. }

ADOTable1.Open; // Abrimos la tabla
ADOTable1.Insert; // Insertamos una nueva tupla
Stream := ADOTable1.CreateBlobStream(ADOTable1.FieldByName('photo'), bmWrite); // Asignamos el BLOB a un stream
jpg.SaveToStream(Stream); // y guardamos la imagen como JPEG (convertido), en el stream
Stream.Destroy; // liberamos.
ADOTable1.Post; // Guardamos.

end;


Recuperar la ultima:

procedure TForm1.Button2Click(Sender: TObject);
var Stream: TStream;
begin
ADOTable1.Open; // Abrimos la tabla
ADOTable1.Last; // Nos vamos a la última tupla para ver la ultima imagen añadida.
Stream := ADOTable1.CreateBlobStream(ADOTable1.FieldByName('photo'), bmRead); // Lo mismo que el anterior caso pero ahora en modo de escritura.
jpg.LoadFromStream(Stream); // Cargamos el BLOB al objeto JPEG
Stream.Destroy; // liberamos...
Image1.Picture.Assign(jpg); // y asignamos la imagen al TPicture.

end;
Recorrer con DbNavigator:

procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
var Stream: TStream;
begin
Stream := ADOTable1.CreateBlobStream(ADOTable1.FieldByName('photo'), bmRead); // Lo mismo que el anterior caso pero ahora en modo de escritura.
jpg.LoadFromStream(Stream); // Cargamos el BLOB al objeto JPEG
Stream.Destroy; // liberamos...
Image1.Picture.Assign(jpg); // y asignamos la imagen al TPicture.

end;
Saludos