PDA

Ver la Versión Completa : Imprimer Con QuickReport Imagen JPG en Base de Datos


nachoalbano
16-09-2006, 22:20:07
Que tal a todos, espero que me puedan ayudar con esta inquietud.
Estoy terminando una aplicacion y estoy realizando unos reportes de la misma con QReport, en Delphi 7. La cuestion es que quiero imprimir imagenes que tengo guardadas en la base de datos las cuales las tengo en un ClientDataSet. Las mismas las subi en formato jpg, pero cuando las quiero visualizar desde el reporte con un QRDBImage me dice que no son compatibles los tipos, es como que espera un archivo bmp.
Alguien sabe que es lo que puedo hacer????

Muchas Gracias

leodelca23
16-09-2006, 23:50:09
en esta pagina vas a encontrar lo que necesitas http://www.programacionfacil.com/delphi/indice.htm (http://www.programacionfacil.com/delphi/indice.htm)
ahi en base de datos impresion quickreport

nachoalbano
17-09-2006, 00:00:50
Muchas gracias por la ayuda, lei la informacion del sitio que me has pasado pero no encuentro el problema a mi solucion.
Claramente en este sitio pone acerca de QRDBImage lo siguiente.
10 .-QRDBImage
Componente para desplegar e imprimir campos de tipo Graphics ( BMP, ICO, WFW).

La cuestion es que en la DB tengo cargados archivos JPG y el QRDBImage no los levanta.
Alguien conoce alguna solucion al respecto.
Gracias de nuevo

nachoalbano
18-09-2006, 01:05:42
Bueno, despues de unos dias de renegar con esto, encontre por ahi una solucion un poco mas prolija de varias que habia planteado.
Primero y principal la idea es descartar el componente QRDBImage y utilizar directamente el componente QRImage (este nos permite trabajar con archivos JPG directamente), pero la idea es capturar desde la base de datos el archivo JPG que tenemos guardado en un campo Image (SQL Server)
Bien, la consulta que contiene el campo imagen (JPG) en cuestion lo tengo en un ClientDataSet.
Utilizando la librería JPEG (delphi 7 es lo que utilizo) agrego en mi procedimiento dos variables, y realizo lo siguiente:



procedure TfmImpresionConsultaInicial.QuickRep1BeforePrint(
Sender: TCustomQuickRep; var PrintReport: Boolean);
var
imagenJPG : TJpegImage;
Corriente : TMemoryStream;
begin
// abro la consulta del paciente que se envio del formulario de Consulta
// Inicial, el valor del paciente nos llega por la property pacienteImprimir.
cdsImpresion.Close;
cdsImpresion.Params.ParamByName('paciente_id').AsInteger := PacienteImprimir;
cdsImpresion.Open;
// creamos la imagen jpg correspondiente
imagenJPG:=TJpegImage.create;
// corriente contiene la imagen en formato binario(creo??)
Corriente:=TMemoryStream.create;
try
// Guardamos el resultado de la consulta en el stream
cdsImpresionimagen.SaveToStream(Corriente);
Corriente.Seek(0,soFromBeginning);
// Ahora la cargamos en la imagen que creamos al principio del formulario
imagenJPG.LoadFromStream(Corriente);
// se asocia al qrImage que necesitamos y listo!!
QRImage2.Picture.Assign(imagenJPG);
finally
// leberamos los objetos Corriente e ImagenJPG
Corriente.Free;
imagenJPG.Free;
end;
end;




espero que les sea util!!!hasta luego