Hola a todos, soy nueva aquí, verán, mi caso es el siguiente:
-Uso Delphi 7, tengo un formulario de productos en el cual necesito guardar una foto (.jpg) en un campo tipo blob en mi BD. Esto desde un TImage, antes usaba un DBImage pero me leyendo otros foros vi que este sólo me permitía guardar imágenes .bmp, en fin, ya logré que la imagen se guarde con el siguiente código:
Código Delphi
[-]procedure TFr_Producto.BitBtn1Click(Sender: TObject);
var
fs: TMemoryStream;
imgJPG: TJPEGImage;
begin
if dlAbrirFoto.Execute then
begin
imgJPG:= TJPEGImage.Create;
fs:= TMemoryStream.Create;
try
imgJPG.LoadFromFile(dlAbrirFoto.FileName);
imgJPG.SaveToStream(fs);
fs.Seek(0,soFromBeginning);
try
imgFoto.Picture.Assign(imgJPG);
finally
fs.Free;
end;
except
on E : Exception do
begin
MessageDlg('Asegúrese de que la imagen seleccionada es de ' +
' tipo JPEG con formato correcto. ' +
E.Message, mtError, [mbOK], 0);
end;
end;
end;
end;
Lo que ahora necesito es que al consultar el registro me aparezca la foto, pero me marca un error que dice que el formato de la foto no es correcto. lo Hago de la siguiente manera:
*Aquí consulto los datos*
Código Delphi
[-]procedure TFr_Producto.FormShow(Sender: TObject);
begin
Seleccion:= 'select producto.ID, CODBAR, NOMBRE, DESCRIPCION, inventario.EXISTENCIA, ';
Seleccion:=Seleccion+'FAMILIA, MARCA, FECHA_ALTA, inventario.STOCK_MAX, inventario.STOCK_MIN, ';
Seleccion:=Seleccion+' inventario.PRE_COST, inventario.PRE_BRUTO, inventario.PRE_VTA, inventario.COST_MED, IMAGEN ';
Seleccion:=Seleccion+'from producto inner join inventario ';
Seleccion:=Seleccion+'on producto.ID = inventario.IDPROD ';
Seleccion:=Seleccion+'where producto.ID = :idP';
buscar_producto(CatProductos.idProd);
end;
*Aquí los asigno al formulario*
Código Delphi
[-]procedure TFr_Producto.buscar_producto(idProd: Integer);
begin
Edit1.Text:= IntToStr(CatProductos.idProd);
Query:= MDatos.Query01;
Query.Close;
Query.SQL.Clear;
Query.SQL.Add(Seleccion);
Query.Params[0].AsInteger:=CatProductos.idProd;
Query.Open;
if not Query.IsEmpty then
begin
Edit1.Text:=Query.Fields[0].AsString;
Edit2.Text:=Query.Fields[1].AsString;
Edit4.Text:=Query.Fields[2].AsString;
Edit3.Text:=Query.Fields[3].AsString;
Edit8.Text:= Query.Fields[6].AsString;
Edit9.Text:= Query.Fields[5].AsString;
Fecha_Alta.Date:= Query.Fields[7].AsDateTime;
Edit7.Text:=Query.Fields[10].AsString;
Edit5.Text:=Query.Fields[13].AsString;
Edit11.Text:=Query.Fields[11].AsString;
Edit13.Text:=Query.Fields[12].AsString;
Edit14.Text:= Query.Fields[9].AsString;
Edit15.Text:= Query.Fields[8].AsString;
Edit16.Text:= Query.Fields[4].AsString;
imgFoto.Picture.Graphic.Assign(Query.Fields[14]);
end;
end;
El error me lo marca en - imgFoto.Picture.Graphic.Assign(Query.Fields[14]); -
Sé que igual y es "tonto" la manera en que le estoy asignando el valor al TImage (imgFoto) pero ya he intentado de muchas maneras y no puedo. No sé si alguien pueda ayudarme, de antemano muchas gracias y espero haber publicado en el lugar correcto.