Gracias por tus respuestas, me han servido mucho. Sin embargo sigo teniendo problemas para visualizar una imagen guardada en una tabla. Este es el código que estoy usando:
Código:
with DM.Q1 do begin
SQL.Clear;
SQL.Add('SELECT * FROM EstAdditional1 WHERE Estudiante = '+QEstudiantes.FieldByName('CodigoInt').AsString);
Open;
if RecordCount = 1 then begin
(FieldByName('Fotografia') as TGraphicField).SaveToStream(MemoryStream);
ImageBuffer.LoadFromStream(MemoryStream);
with fEstudiantesRegistroFotografia do begin
iFotografia.Picture.Assign(ImageBuffer);
iFotografia.Visible := True;
end;
end;
Close;
end;
MemoryStream.Free;
ImageBuffer.Free;
, donde:
DM es un módulo de datos
Q1 es un TQuery
QEstudiantes es un TQuery
MemoryStream es un TMemoryStream
ImageBuffer es un TJPEGImage
fEstudiantesRegistroFotografia es un TForm
iFotografia es un TImage
En este código no se genera ningún error. El error se genera cuando se ejecuta el ShowModal de la forma que contiene la imágen, es decir cuando se ejecuta:
fEstudiantesRegistroFotografia.ShowModal;
El mensaje de error dice:
JPEG error #42.
En realidad no sé que significa, y aunque he hecho algunas modificaciones no he dado con el problema. Incluso he probado con varias imágenes.
Por si acaso, estoy guardando la imagen así:
Código:
// Fotografía
if fEstudiantesRegistroFotografia.iFotografia.Visible then begin
MemoryStream := TMemoryStream.Create;
fEstudiantesRegistroFotografia.iFotografia.Picture.Graphic.SaveToStream(MemoryStream);
Clear;
Add('DELETE FROM EstAdditional1 WHERE Estudiante = '+fEstudiantesConsulta.QEstudiantes.FieldByName('CodigoInt').AsString);
DM.Q1.ExecSQL;
Clear;
Add('INSERT INTO EstAdditional1 (Estudiante, Fotografia) VALUES ('+fEstudiantesConsulta.QEstudiantes.FieldByName('CodigoInt').AsString+', :Foto)');
DM.Q1.ParamByName('Foto').LoadFromStream(MemoryStream, ftGraphic);
DM.Q1.ExecSQL;
MemoryStream.Free;
end;
De nuevo muchas gracias por su ayuda.