0% encontró este documento útil (0 votos)
312 vistas27 páginas

Tutorial ReportManager

El documento describe el editor de informes Report Manager, incluyendo cómo descargarlo, instalarlo y los componentes necesarios, y cómo crear e imprimir un informe básico de lista de contactos desde una base de datos. También explica cómo abrir el informe desde un proyecto de Delphi y exportarlo a formatos como PDF, HTML y texto.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
312 vistas27 páginas

Tutorial ReportManager

El documento describe el editor de informes Report Manager, incluyendo cómo descargarlo, instalarlo y los componentes necesarios, y cómo crear e imprimir un informe básico de lista de contactos desde una base de datos. También explica cómo abrir el informe desde un proyecto de Delphi y exportarlo a formatos como PDF, HTML y texto.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

El editor de informes Report Manager (1)

PeseaquenoesungeneradordeinformesmuyconocidoenelmundoDelphi,esteeditordeinformes destacaporsusencillez(estenespaol)yquesobretodoesgratuito. SienalgoaventajaaQuickReportesenquepermitegenerarlosinformesenarchivosconextensinREP paraluegosercargadosdesdeDelphieinclusopodemosmodificarlosentiempodeejecuci [Link] lasexplosionesqueocasionaeleditorRavecuandoteequivocas,aunquehayquereconocerqueesun pocoraroenalgunascosas. DESCARGANDOELEDITOR Puededescargarsedeestapginaweb: [Link]

DentrodelapartadoDescarganosllevaraotrapginadeSourceForgedondeseencuentralaversin2.9a

[Link] pulsamosenlamismapginawebelbotnViewallfilesydescargamosestearchivo repporman_delphi_builder_2_9.zip:

INSTALANDOELEDITOR LaventanadeinstalacinpermiteelegirelidiomaespaolysolohayqueirpulsandoelbotnSiguiente:

INSTALANDOLOSCOMPONENTES CreamosunacarpetallamadaReportManagerdentrodelacarpeta: \CodeGear\RADStudio\5.0\Componentes\ Ydescomprimimosdentrodelamismaelarchivoquehemosdescargado: Repporman_delphi_builder_2_9.zip [Link]:

VeremosestospaquetesenlapartederechadeDelphi:

Pulsamoselpaqueterppack_del2007.bplconelbotnderechodelratnyseleccionamosInstall:

[Link] componentes:

Pasemosaverelentornodetrabajodeesteeditor.

ELASPECTODELEDITOR Alejecutarporprimeravezeleditordeinformesvemosqueaparececompletamentepelado:

PulsamoselbotnNuevoymostraresteaspecto:

[Link]: Barradeherramientassuperior

Contienelastpicasopcionesdeabriroguardararchivos,mostrarlavistaprevia,[Link] iconosparainsertarcomponentes:etiquetas,camposvinculadosatablas,formasgeom tricas,dibujosy [Link] nlosnecesitemos. Estructuradelinforme

[Link] Detalle [Link] aDatosdonde veremoslasvariablesglobalesquepodemosutilizar:

Lazonadetrabajo

[Link] deesteeditor,yaquecomoveremosmsadelantesepuedencrearinformesavanzadosporprogramacin interceptandoentiemporealloscomponentesaligualquehacemosconQuickReport. CREANDOUNINFORME Paraprobarquetodohaidobien,vamosacrearunpequeoinformeapartirdeunabasededatosde [Link] [Link] queconfundeporsusmltiplespantallas. SeleccionamosenelmensuperiorlasopcionesInformeConfiguracindedatos:

Yaparecerestaventana:

SeleccionamosInterbaseExpressqueequivalerealmenteaunaconexinDBExpressalpulsarelbotn Configurar:

AqutraecomoejemplolaconfiguracinaunabasededatosInterbasecuyaconexinDBExpressest configuradadentrodeDelphi7,peroloquevamosahacerescrearunanuevaconexi npulsandoeste botn:

EnelnombredelaconexinleponemosAGENDA:

Entoncesvolveralapantallaanterioryconfiguramosdondeseencuentralabasededatos:

[Link]:

Acontinuacinnospediridentificarnos:

Ysitodohaidobiennosdiresto:

Volvemosalaprimerapantallayseleccionamoslaconexinquehemoscreado:

Loaadiralalistadeconexionesdisponibles:

AhoranosvamosalapestaaConjuntodedatosdelinformeparaelegirlastablasdelaquequeremos sacarlainformacin:

PulsamoselbotnNuevoconjuntodedatosylollamamosCONTACTOS:

Laventanacambiaraestaotra:

EscribimoslasentenciaSQLdelosdatosquenosvamosatraer:

PulsamosAceptaryalvolveraleditorveremosenlapestaaDatoslatablaquehemosvinculado:

[Link]. Comoloquequierodisearesunlistado,tenemoselproblemadequesolotenemoslabandadedetalle. Parainsertarlabandadelacabeceraseleccionamos [Link] lasdosbandas:

Vamosapulsaresteiconoparaaadirunaetiquetaalinforme:

Unaveztenemoslaetiquetaseleccionadanosvamosalaizquierdaalinspectordeobjetosyenla propiedadtextoescribimosLISTADODECONTACTOS:

Unadelascosasrarasquehaceesteeditoresquealinsertarunaetiquetaledaunanchurayalturamuy [Link]:

ParacopiaretiquetasnopodemosutilizarlacombinacindeteclasCTRL+CyCTRL+V,hayquehacerlo conALT+CyALT+[Link]. Ahorainsertamosloscamposarrastrndolosdesdelapestaadedatosalabandadeldetalle:

Asquedaradespusdeinsertarlos:

Pulsamoselbotndevistapreviaparaverelinforme:

Aquencontramoselprimerinconveniente:

[Link] [Link]:

Ahorasisalebien:

EnelprximoartculoveremoscomocargaresteinformedesdenuestroproyectodeDelphias como [Link].

El editor de informes Report Manager (2)


Continuandoconestediscretodiseadordeinformes,vamosavercomoabrirelinformedesdenuestro proyectoenDelphi,haciendoquemuestrelavistapreviaoexportndoloaotrosformatoscomoPDF,TXTo [Link]. ABRIENDOELINFORMEDESDEDELPHI Continuandoconellistadodecontactosquecreamosenelart culoanterior,vamosacrearunnuevo proyectoenDelphiconesteformulario:

Parapoderrealizarlaspruebasnecesitamosaadirlos componentesVCLReportyPDFReportqueseencuentranenelapartadoReportmandelapaletade componentes. AlpulsarelbotnImprimirpodemosrealizarunavistapreviasiestactivadoelcheckboxobienlanzarlo directamentealaimpresora: procedure [Link](Sender: TObject); begin [Link] := 'Listado de contactos'; [Link] := ExtractFilePath([Link]) + '[Link]'; [Link] := [Link]; [Link]; end;

[Link] esas,modificarlapropiedadFilenamecomocorresponda(lomejoresconfiguraloenunarchivoINI). [Link] PDFReport(recomendado): procedure [Link](Sender: TObject); begin // Mtodo 1 [Link] := 'Listado de contactos'; [Link] := ExtractFilePath([Link]) + '[Link]'; [Link] := ExtractFilePath([Link]) + '[Link]'; [Link]; [Link](PChar('Listado exportado correctamente:' + #13 + #13 + [Link]), 'Exportando', MB_ICONINFORMATION); end;

ObienelcomponenteVCLReport: procedure [Link](Sender: TObject); begin // Mtodo 2 [Link] := 'Listado de contactos'; [Link] := ExtractFilePath([Link]) + '[Link]'; [Link](ExtractFilePath([Link]) + '[Link]'); [Link](PChar('Listado exportado correctamente:' + #13 + #13 + ExtractFilePath([Link]) + '[Link]'), 'Exportando', MB_ICONINFORMATION); end;

[Link] pginawebHTMLdeestemodo: procedure [Link](Sender: TObject); begin [Link] := 'Listado de contactos'; [Link] := ExtractFilePath([Link]) + '[Link]'; [Link](ExtractFilePath([Link]) + '[Link]'); [Link](PChar('Listado exportado correctamente.' + #13 + #13 + ExtractFilePath([Link]) + '[Link]'), 'Exportando', MB_ICONINFORMATION); end;

Laexportacinquehaceesbastantedecente:

AunqueEurekaLogmehadetectadoun falloenunprocedimientodeReportManagerquenoliberamemoria:

Habrquehaceralgoms? Exportarelarchivoatextoesalgosimilar:

Porlovistonoliberaelobjetopdfdriver.

procedure [Link](Sender: TObject); begin [Link] := 'Listado de contactos'; [Link] := ExtractFilePath([Link]) + '[Link]'; [Link](ExtractFilePath([Link]) + '[Link]'); [Link](PChar('Listado exportado correctamente.' + #13 + #13 + ExtractFilePath([Link]) + '[Link]'), 'Exportando', MB_ICONINFORMATION); end;

Hayquereconocerqueaqunopuedehacermaravillas:

Tambinleocurrequenoliberaeste objeto:

Aunas,ambasexportacionesfuncionan [Link].

CREANDOELINFORMEDEUNAFACTURA SupongamosquetenemosunabasededatosdeInterbasellamada [Link] CLIENTES(clicparaampliar):

Tambintenemoslatablade ARTICULOS:

Yparalacabeceradelafacturaestala tablaFACTURAS:

YluegoestalatablaDETALLEparasu contenido:

NosvamosaleditorReportManager, [Link] detalle,tenemosqueseleccionarInformeAadirCabeceradepginaeInformeAadirPiede pgina. [Link]( Insertar textoesttico)paraponerlosdatosdenuestraempresa:

Parapoderescribireltextoenunaetiquetatenemosquerellenarlapropiedad Textodelinspectorde objetos:

Yparaseleccionareltamaodelafuenteyelestilo(negrita,cursiva, subrayado)utilizamoslaspropiedadesqueseencuentranenlapesta aTexto:

Alfinalteacostumbras,peronohubiesevenidomalunabarradeestilosde [Link] n:

Esconvenientequeellogotiposeencuentrelamismacarpetaqueelarchivo [Link] ellogotipoledamosaesebotnyabrimosunrectnguloenelinforme:

Teniendolaimagenseleccionada,nosvamosalinspector deobjetosyhacemosclicsobrelapropiedadImagen:

Elegimoslaimagenyluegolaajustamosunpoco:

CONFIGURANDOELORIGENDEDATOS [Link] crearlasconsultasdecabeceraydetalledelafactura. Lospasosparatraernoslainformacinsonlossiguientes: [Link]. [Link]. [Link]. [Link] [Link]:FACTURACION. [Link] culoanterior:

[Link] seleccionadaycomprobamossiconectacorrectamente. [Link],cerramosestaventanayaadimoslaconexinreciencreadaenla ventanadondeestamos:

[Link] datosdelinformeypulsamoselbotnNuevoconjuntodedatos. [Link]:FACTURAS. [Link]: SELECT FACTURAS.*,[Link] AS NOMBRE, [Link] AS DIRECCION, [Link] AS POBLACION, [Link] AS PROVINCIA, [Link],[Link] FROM FACTURAS LEFT JOIN CLIENTES ON [Link]=[Link] WHERE ID=1

SipulsamoselbotnMostrardatosnosmostrarlaprimerafactura(soloparaverquelaSQLescorrecta):

Despusdeterminarlaspruebashay quequitarlelacondicinWHERE. [Link]: SELECT DETALLE.*,[Link], [Link] FROM DETALLE LEFT JOIN ARTICULOS ON [Link]=[Link]

LastablasdeclientesydeartculosnonecesitamostraerlasyaquelashemosvinculadoconLEFTJOINa lasconsultasdeFACTURASyDETALLE. [Link].

MOSTRANDOLOSDATOSDELCLIENTE Paraenmarcarlosdatosdelclienteaadimosundibujosimpleconelbotn:

Locolocamosmsomenosas:

clientearrastrandoelcampoNOMBREdesdelapestaaDatos:

Ahoravamosatraernoselnombredel

Asnostraemoselrestodedatos:

Siencualquiermomentoosequivocisdecampo ocomponenteyqueriseliminarlo,hayqueseleccionarelcampoypulsarCTRL+SUPR. Utilizandounaetiquetayuncampo,vamosaponerdebajodellogoelndefacturaylascabecerasdel detalle:

Osrecuerdoqueparacopiarcampos hayqueutilizarlacombinacindeteclasALT+CyALT+V. CREANDOELDETALLEYELPIEDELAFACTURA EldetalledelafacturayatienetodossuscamposenlatablaDETALLEporquehemosvinculadoconLEFT JOINelnmeroynombredelartculoquenoshacafalta:

Paraqueaparezcantodaslaslneasde [Link] aseleccionandolatabla DETALLEalinforme:

[Link],el importedelIVAyeltotaldelafactura:

Antesdeterminar,necesitamosfiltrareldetalleparaquenosalgaeldetalledetodaslasfacturas,s lodebe [Link] [Link]: [Link]=[Link] Simostramoslavistapreviadelafacturadebesaliresto:

Perocomotodossabemos,siemprenos obliganaaadircosasrarasenlafacturacomoimgenesentiemporeal,mostrardatosdecamposqueno [Link] culo. PruebasrealizadasenRADStudio2007.

18 junio 2010
El editor de informes Report Manager (3)
Continuandoconlafacturadelartculoanterior,vamosadarleformatoalosnmerosrealesyamodificarsu [Link] alinforme. AJUSTARLOSDECIMALES AntesdecargarelinformeennuestroproyectodeDelphivamosatratardeadecentarlounpoco [Link] merodedecimalessale comoledalagana:

Paradarformatoadosdecimalesseleccionamoslos camposPRECIO,PORIVA,IVAyTOTALLINEAyensupropiedad Formatoleponemos###,##0.00:

Ahorasisalecomonosotrosqueremos:

Lomismotenemosquehacerconlostotalesdel documento. MODIFICARELINFORMEENTIEMPOREAL UnadelascosasquesiempremehagustadodeQuickReportestenerlaposibilidaddemodificarentiempo realloscomponentesdelinformejustoantesdeenviarloalaimpresora. VamosaverloconunnuevoproyectoenDelphiconelformularioquevaaimprimirlafactura:

Aligualqueelejemplodeloscontactostenemosel componenteVCLReportqueconfiguramosalpulsarelbotnImprimir: procedure [Link](Sender: TObject); begin [Link] := 'Factura'; [Link] := ExtractFilePath([Link]) + '[Link]'; [Link] := StrToInt([Link]); [Link] := [Link]; [Link]; end;

Tambincontrolamoselnmerodecopiasdequeseimprimensegnloquetenemospuestoenelcampo [Link] [Link](antesdeimprimir)delcomponente VCLReport: procedure [Link](Sender: TObject); var i: Integer; begin with [Link] do begin if FindComponent('TRpExpression9') is TRpExpression then begin if (FindComponent('TRpExpression9') as TRpExpression).[Link] > 1000 then begin (FindComponent('TRpExpression9') as TRpExpression).FontColor := clRed; (FindComponent('TRpExpression9') as TRpExpression).FontStyle := 1; end; end; end; end;

ParapoderaccederalaclaseTRpExpressiondebemosaadirlaunidadrplabelitemalformulariodonde [Link](TRpExpression9)noslodiceelmismoeditor:

Loquehacemosesinterceptarlojusto antesdeimprimirloysegnelvalorquevaaimprimirtomamoslaaccinquequeramos:

LoscomponentesdeReportManagertienenla [Link] componenteeligeelcolorblanco: (FindComponent('TRpExpression9') as TRpExpression).FontColor := clWhite;

Estopuedesermuyinteresanteparamostraruocultarciertasetiquetasseg nlaspropiedadesdelafactura. Porejemplo,segnlaformadepagoalomejormeinteresamostrarlaetiquetadequesehapagadoal contado:

Comoantesdeimprimirlafacturayasabemossidebemosimprimir estaetiquetaono,podemoshacerlainvisiblesinutilizareleventoBeforePrint: procedure [Link](Sender: TObject); begin [Link] := 'Factura'; [Link] := ExtractFilePath([Link]) + '[Link]'; [Link] := StrToInt([Link]); [Link] := [Link]; if not [Link] then with [Link] do if FindComponent('TRpLabel14') is TRpLabel then (FindComponent('TRpLabel14') as TRpLabel).FontColor := clWhite; [Link]; end;

[Link] invisibletambinlepodemosquitarleeltexto: if not [Link] then with [Link] do if FindComponent('TRpLabel14') is TRpLabel then (FindComponent('TRpLabel14') as TRpLabel).Text := '';

Deestemodopodemoscontrolarsiseimprimenonolascuentasbancarias,losdistintostiposdeIVA,los [Link] expresiones,nohaynadacomoDelphiparameterlemanoalosdocumentos. ENVIARPARMETROSALINFORME

[Link] seleccionandolasopcionesInformeConfiguracindedatosyenelformularioqueaparecepulsamosel botnParmetros:

Seabrirestaventana:

PulsamoselbotnAadirunnuevo parmetroycomoqueremosenviarlelacuentabancarialeponemosdenombre CCC:

PulsamosAceptaryotravezAceptar [Link] parmetro:

Paramandarleelparmetroalimprimir desdeDelphihacemosesto:

procedure [Link](Sender: TObject); begin [Link] := 'Factura'; [Link] := ExtractFilePath([Link]) + '[Link]'; [Link] := StrToInt([Link]); [Link] := [Link]; [Link]('CCC').AsString := '1234-5678-441234567890'; [Link]; [Link]; end;

DebemosllamaralmtodoPrepareParamsBeforeOpenparaqueelinformesechupelosparmetrosque lemandamos:

Peroesqueademspodemosutilizar [Link] metroparael detalledelafacturallamadoPRECIOMINIMOparaquemuestresloaquellaslneasdedetallecuyoprecio rebaseelquelepasamoscomoparmetro:

AhoramodificamoslaSQLdeldetalledeeste modo: SELECT DETALLE.*,[Link], [Link] FROM DETALLE LEFT JOIN ARTICULOS ON [Link]=[Link] WHERE PRECIO >= :PRECIOMINIMO

Siintentamoshacerlavistapreviaenelinformenosdiresto:

Paraprobarquevayabien,entramosde nuevoalparmetro,loponemosdetipomonedayconelvalor20:

Alhacerlavistapreviasolomostrarlaslneasde detallecuyoprecioesmayorde20:

EnDelphilepasamoselparmetrocomohemos vistoantes: [Link]('CCC').AsString := '1234-5678-441234567890'; [Link]('PRECIOMINIMO').Value := 20; [Link]; [Link];

AunqueReportManagerpuedapareceruneditordeinformesalgosimplealprincipio,conformevamos [Link] ximoartculo veremoscomorealizarinformesavariasbandasycomosumarelcontenidodevariasdeellas.

También podría gustarte