Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Report Manager (https://www.clubdelphi.com/foros/showthread.php?t=30439)

dvlt 06-04-2006 11:57:23

Report Manager
 
Buenas!
Tengo un problemilla, o no se como llamarlo, quizas me quiero complicar un poco la vida, pero es a la conclusión que he llegado. Necesito guardar unos informes de Report manager en la base de datos, para luego, según quiera el usuario escojer el q sea mediante un treeview, donde esta toda la lista de los informes de la base de datos, para imprimirlo generando los datos a través del programa, es decir, el usuarios imaginemos q quiere imprimir la ficha de un cliente, entonces desde el programa selecciona el informe de ficha cliente y se genera el informe de la ficha de ese cliente, aqui debo utilizar parametros, pero como? y mas aun... como puedo hacer que el programa me muestre ese determinado informe que se ha seleccionado a través del treeview trayendolo de la base de datos?

Muchas gracias a todos!!!

mazinger 07-04-2006 00:01:59

Para llamar a un parámetro:

Código:

VCLReport1.Report.Params.ParamByName('IdINI').Value := IdIni;
Seleccionar el archivo .rep que quieres llamar:

Código:

        VCLReport1.FileName := 'Factura.rep';
Y por último el codígo completo de llamada a una funcion de impreesión de un informe en una dll:

Código:

Function ImprimeFactura(aDB, aSerie : String; IdIni,IdFin : Integer; Previsual, AutoNombre, PDF,Impresion,Archivo: Boolean) : Boolean;
Var
  Directorio, ConnectionString : String ;
Begin
  Inicio;
  Result := False;
  With dmRecursos.VCLReport1 do
    Try
        ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
              aDB+';Jet OLEDB:Engine Type=4';
        Directorio := ExtractFilePath(Application.ExeName);
        dmRecursos.ADOConnection1.ConnectionString := ConnectionString;
        dmRecursos.ADOConnection1.Open;
        FileName := Directorio +'informes\' +'Factura.rep';
        CambiaImpresora(LeeTextoOpcion('prn_ImpresoraFacturas'));
        Report.PrinterSelect := pRpUserPrinter1;
        Report.DatabaseInfo.Items[0].ADOConnectionString := ConnectionString;
        ShowPrintDialog := False;
        ShowProgress := False;
        Report.Params.ParamByName('IdINI').Value := IdIni;
        Report.Params.ParamByName('IdFIN').Value := IdFin;
        Report.Params.ParamByName('SERIEFACTURA').Value := aSerie;
        Report.Params.ParamByName('ARCHIVO').Value := Archivo;
        Title := 'Impresión de fras. Serie ' + aSerie+' desde la '+
                      IntToStr(IdIni)+' hasta la '+IntToStr(IdFin);
        Preview := Previsual;
        If AutoNombre Then
            SaveToPDF(Directorio+'FrasSerie_' + aSerie+'_'+IntToStr(IdIni)+
                                        '_'+IntToStr(IdFin)+'.PDF');
        If PDF Then Begin
          With dmRecursos.SaveDialog1 do Begin
            InitialDir := Directorio;
            FileName := 'FrasSerie_' + aSerie+'_'+IntToStr(IdIni)+'_'+IntToStr(IdFin)+'.PDF';
            Result := Execute;
            SaveToPdf(FileName,True);
          End;
        End  Else Execute;
    Finally
        dmRecursos.FreeOnRelease;
    End;
End;

Espero que te ayude

dvlt 12-05-2006 11:57:06

Hola de nuevo,
sigo sin poder ejecutar un reporte desde la aplicación, quizas no me explique del todo bien.

Tengo unos reportes guardados en la base de datos, en una tabla para informes, con una serie de campos que me ayudaran a situar los informes en grupos en mi treeview y un campo informe de tipo blob donde almaceno el informe. La idea es que al hacer clic en un informe desde el treeview, se me abra el informe. Y aquí empieza el problema, pues no consigo que mi TVCLReport me abra el informe. Hasta ahora, y por lo que he podido descubrir debo utilizar un TRpAlias para definir la conexion a la base de datos y vincular el TVCLReport con este. Creo, y digo solo creo, que el TRpAlias esta bien configurado, pues puedo probar la conexion y me dice que es correcta, pero también da la opción de navegar por la libreria y nada de nada, ahí me dice que hay un parámetro incorrecto, pero no me especifica nada. Total, que enlaco el TVCLReport con el TRpAlias, pero ahora ya no se como indicarle el informe que debe abrir, es decir, que cuando yo clique sobre un informe en el treeview, como, o mejor dicho, que propiedades debo utilizar para indicar el informe que me debe abrir de la tabla de la base de datos.

Bueno, espero haberme explicado mejor ahora. Muchas gracias a todos y a ver si alguien me puede echar una mano!

Saludos!

Casimiro Notevi 12-05-2006 20:52:45

¿Has visitado la sección de "documentación" de la página web de report manager?, puede que encuentres lo que necesitas.

dvlt 13-05-2006 19:23:01

Si, he mirado la documentación, pero no viene ninguna información de como implementar el abrir un reporte de la base de datos en delphi...

En teoria necesito utilizar un TRpAlias para definir la conexion y utilizarlo en las propiedades del TVCLReport, pero no consigo que funcione, a parte de no saber como indicarle al TVCLReport cual es el reporte de la tabla que quiero que abra. Alguna idea?

Gracias de nuevo!

Casimiro Notevi 14-05-2006 00:22:21

Entre la amplia documentación de report manager, también tienes esta que es exclusivamente para delphi, ¿no te sirve?

dvlt 16-05-2006 11:52:31

Hola de nuevo
definitivamente, configuro el trpalias, me deja probar la conexion y me dice que es correcta, pero si quiero navegar por la tabla me dice que hay un parametro incorrecto y no me especifica cual... Estoy perdido... alguna idea por favor?

Gracias!!!

Casimiro Notevi 16-05-2006 14:40:45

prueba a hacer una prueba sencillita siguiendo el ejemplo del tutorial, y vas poco a poco hasta ver qué falla en lo que haces, porque así, desde aquí, a ciegas, está difícil ayudarte
:(

jorllazo 17-11-2006 08:57:29

Yo lo que haria en el momento del doble click sobre el arbol, es cargar el contenido del blob en un stream y grabarlo en un fichero temporal en disco, para despues cargarlo del modo habitual que tiene report manager. Cuando acaba el preview, este fichero deberias eliminarlo.

Aqui tienes un trozo de codigo que lee un jpg de una BD igual te sirve como idea inicial
Código Delphi [-]
                        procedure TForm1.btnShowImageClick(Sender: TObject);
                             var
                                  bS  : TADOBlobStream;
                                  Pic : TJpegImage;
                        begin
                                  bS := TADOBlobStream.Create
                                          (AdoTable1Picture, bmRead);
                                  try
                                      Pic:=TJpegImage.Create;
                                      try
                                           Pic.LoadFromStream(bS);
                                           ADOImage.Picture.Graphic:=Pic;
                                      finally
                                           Pic.Free;
                                      end;
                                  finally
                                           bS.Free
                                  end;
                        end;

Espero te sirva la idea.


La franja horaria es GMT +2. Ahora son las 15:57:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi