Post on 05-Apr-2015
Ausführen von Berichten Ausführen von Berichten unter Visual FoxPro 9.0unter Visual FoxPro 9.0
deutschsprachige FoxPro User Groupdeutschsprachige FoxPro User Group
Rainer BeckerRainer Becker
Microsoft Visual FoxPro 9.0 WebCastMicrosoft Visual FoxPro 9.0 WebCast
REP2
Teil 6: Ausführen von BerichtenTeil 6: Ausführen von Berichten
Mittwoch, 17.8.2005, 16:00 – 17:00 UhrMittwoch, 17.8.2005, 16:00 – 17:00 Uhr Die objektorientierte Entwicklungsumgebung und relationale Die objektorientierte Entwicklungsumgebung und relationale
Datenbank Microsoft Visual FoxPro liefert seit jeher eine Datenbank Microsoft Visual FoxPro liefert seit jeher eine Vielzahl von Werkzeugen gleich mit. Besonders beliebt ist Vielzahl von Werkzeugen gleich mit. Besonders beliebt ist dabei der Berichtsgenerator, der lizenzkostenfrei an alle dabei der Berichtsgenerator, der lizenzkostenfrei an alle Anwender mitgeliefert werden darf. In der neuen Version 9.0 Anwender mitgeliefert werden darf. In der neuen Version 9.0 wurde der Berichtsgenerator grundlegend überarbeitet und wurde der Berichtsgenerator grundlegend überarbeitet und massiv erweitert. Behandelt werden die neuen Ausgabe-massiv erweitert. Behandelt werden die neuen Ausgabe-optionen und die Programmierbarkeit zur Laufzeit in optionen und die Programmierbarkeit zur Laufzeit in verschiedenen Beispielen sowie die zusätzlich mögliche verschiedenen Beispielen sowie die zusätzlich mögliche Erweiterung der Berichtsausgabe in PDF-Dateien. Erweiterung der Berichtsausgabe in PDF-Dateien.
Rainer BeckerRainer Becker
dFPUGdFPUG Online-AngeboteOnline-Angebote LoseblattsammlungLoseblattsammlung
VFP-EntwicklerkonferenzVFP-Entwicklerkonferenz VFP-LokalisierungVFP-Lokalisierung Framework Visual ExtendFramework Visual Extend MVP, MCP, ISVMVP, MCP, ISV Wizards & Builders GmbHWizards & Builders GmbH
Wie bekomme ich VFP ?Wie bekomme ich VFP ?
Update von 6.0, 7.0, 8.0 sowie VS 97Update von 6.0, 7.0, 8.0 sowie VS 97 Nicht von VFP 5.0 oder früherNicht von VFP 5.0 oder früher
Internationale und US/Canada-VersionInternationale und US/Canada-Version Preisunterschied durch DollarverfallPreisunterschied durch Dollarverfall Technisch identischTechnisch identisch Kein Support / Marketingbudget für US-Version in BRDKein Support / Marketingbudget für US-Version in BRD
dFPUG bietet exklusiv „Deutsche Version“dFPUG bietet exklusiv „Deutsche Version“ Benutzeroberfläche, Berichtsdesigner, WerkzeugeBenutzeroberfläche, Berichtsdesigner, Werkzeuge
VortragsthemenVortragsthemen Erweiterbarkeit von BerichtenErweiterbarkeit von Berichten
zur Laufzeit mit sogenanntenzur Laufzeit mit sogenanntenReportlistenern (Demos)Reportlistenern (Demos)
PDF-AusgabePDF-Ausgabe Erweiterbarkeit von BerichtenErweiterbarkeit von Berichten
zur Designzeit (Übersicht)zur Designzeit (Übersicht)
Vorwarnung:Vorwarnung: Reportlistener-Klassen sind komplex!Reportlistener-Klassen sind komplex! Designer-Anpassungen noch komplexer!Designer-Anpassungen noch komplexer!
Ein bißchen Theorie vorwegEin bißchen Theorie vorweg
In VFP 8.0 und früher übernahm der eingebaute In VFP 8.0 und früher übernahm der eingebaute Listengenerator monolitisch die FunktionalitätListengenerator monolitisch die Funktionalität
Ab VFP 9.0 wird die Funktionalität aufgeteilt Ab VFP 9.0 wird die Funktionalität aufgeteilt zwischen der Reportengine und einer weiteren Klassezwischen der Reportengine und einer weiteren Klasse
Die Klasse wird instanziiert und beim Berichtsaufruf Die Klasse wird instanziiert und beim Berichtsaufruf mit übergeben – und kann dabei verkettet werdenmit übergeben – und kann dabei verkettet werden
Diese sogenannten Reportlistener kann man Diese sogenannten Reportlistener kann man subclassen und bestehende Methoden überschreiben subclassen und bestehende Methoden überschreiben – und damit die Ausgabe korrigieren/ergänzen usw.!– und damit die Ausgabe korrigieren/ergänzen usw.!
SubclassedReportListener
Report Engine 8.0
Report Engine 9.0
ReportListener Class
Events (Before/After Band, Render, EvaluateContents, etc)
Handles Everything:DataObject PositioningRenderingPrintingPreviewing
Handles:DataObject Positioning
Handles:RenderingPrintingCustom Previewing
Handles:New Output Types:XML/HTMLCompresses TIFFCustom GDI+ drawingUser defined
REPORT FORM foo.frx PREVIEWREPORT FORM foo.frx TO PRINTER NOCONSOLEREPORT FORM foo.frx OBJECT oRListener
Report Engine Architecture Overview
Übergabe des ListenerobjektesÜbergabe des Listenerobjektes
Aufruf mit selbst erzeugtem Listenerobjekt:Aufruf mit selbst erzeugtem Listenerobjekt: oReportlistener = createobject(„MyReportListener“…)oReportlistener = createobject(„MyReportListener“…) REPORT FORM ? OBJECT oReportlistenerREPORT FORM ? OBJECT oReportlistener
Vereinfachter Aufruf für mitgelieferte ListenerVereinfachter Aufruf für mitgelieferte Listener REPORT FORM ? OBJECT TYPE <n>REPORT FORM ? OBJECT TYPE <n> 0=Preview, 1=Print, 4=XML, 5=HTML, -2=Debugger0=Preview, 1=Print, 4=XML, 5=HTML, -2=Debugger
Alte Optionen werden entsprechend umgesetztAlte Optionen werden entsprechend umgesetzt PREVIEW => 0, TO PRINTER => 1PREVIEW => 0, TO PRINTER => 1
DEMO Listener (1)DEMO Listener (1)
Before/After Report/Band (introlistener)Before/After Report/Band (introlistener) Farbeinstellungen für Elemente (evaluatecontents)Farbeinstellungen für Elemente (evaluatecontents)
Schriftgrad ändern mit GDI (rotatedcontrols)Schriftgrad ändern mit GDI (rotatedcontrols) Kreisdiagramme mit GDI (customcontrol)Kreisdiagramme mit GDI (customcontrol)
komplexere Version unter Solution Samples verfügbarkomplexere Version unter Solution Samples verfügbar Hinweise zu GDI-Funktionen (foxgdiplus/FFC)Hinweise zu GDI-Funktionen (foxgdiplus/FFC)
Class that usesReportPreview API
GDI+EMF Pages
stored in memory
ReportListener Class
ReportListenerObject Factory:_ReportOutput
Report Engine 9.0
Engine Events
Engine Driven Events:Load/UnloadReport()Before/AfterReport()Before/AfterBand()
Object Events:EvaluateContents()AdjustObjectSize()Render()
XBase PreviewObject Factory:_ReportPreview
Listener called by Preview:OutputPage()OnPreviewClose()GetPageHeight()GetPageWidth()
Preview called by Listener:SetReport()Show()Hide()
Preview ExampleRun the report, and generate the pages
2
DEMO Listener (2)DEMO Listener (2)
Verknüpfung von Listenern (successor)Verknüpfung von Listenern (successor) Achtung: Weiterleitung der Aufrufe notwendig!Achtung: Weiterleitung der Aufrufe notwendig!
Highlight: DynamicFormatting-Listener (Solution)Highlight: DynamicFormatting-Listener (Solution) Optimale generische Lösung für Userdata-Verwendung!Optimale generische Lösung für Userdata-Verwendung!
PDF-Ausgabe in VFP9PDF-Ausgabe in VFP9
Eine Reportlistener-Klasse von Lisa Slater Eine Reportlistener-Klasse von Lisa Slater Nichols für die PDF-Ausgabe in VFP 9.0Nichols für die PDF-Ausgabe in VFP 9.0
PDF-AusgabePDF-Ausgabe
Umfangreicher Artikel von Lisa Slater NichollsUmfangreicher Artikel von Lisa Slater Nicholls Einfachste Handhabung in eigener ApplikationEinfachste Handhabung in eigener Applikation Kurzvorführung Beispielaufruf PDF-ErstellungKurzvorführung Beispielaufruf PDF-Erstellung Kurze Erläuterung der technischen HintergründeKurze Erläuterung der technischen Hintergründe
Installation PDF-TreiberInstallation PDF-Treiber
DruckertreiberDruckertreiber
VerzeichnisVerzeichnis
Programmierung im Programmierung im Berichts-DesignerBerichts-Designer
Einführung für fortgeschrittene Einführung für fortgeschrittene Berichtsentwickler unter VFP 9.0Berichtsentwickler unter VFP 9.0
Report Designer EreignisseReport Designer EreignisseReport
Designer
(_REPORTBUILDER)Builderaufruf:
Anlage Datasession
frxPuffer für Layout
Tabelle
Parameter:1. returnFlags2. eventType3. commandClauses4. designerSessionId
Satzpointer setzen
Bericht/Etikett
lesen & updaten
Wechsel der Data-session falls notwendig
Aufruffolge in WortenAufruffolge in Worten
Reportdesigner erzeugt private Datasession und Reportdesigner erzeugt private Datasession und kopiert eine temporäre FRX-Version hineinkopiert eine temporäre FRX-Version hinein
Bei 19 verschiedenen Ereignisse im Report Designer Bei 19 verschiedenen Ereignisse im Report Designer ruft dieser die Systemvariable (_REPORTBUILDER) ruft dieser die Systemvariable (_REPORTBUILDER) auf und übergibt 4 Parameterauf und übergibt 4 Parameter
2 Werte werden wieder zurückgegeben und steuern 2 Werte werden wieder zurückgegeben und steuern das weitere Verhalten des Reportdesignersdas weitere Verhalten des Reportdesigners
Reportbuilder FrameworkReportbuilder Framework
Zusätzlich hat der Reportbuilder eine interne Lookuptabelle Zusätzlich hat der Reportbuilder eine interne Lookuptabelle zum Verbinden von Klassen mit Designer-Ereignissenzum Verbinden von Klassen mit Designer-Ereignissen
Stattdessen kann eine eigene externe Tabelle mit eigenen Stattdessen kann eine eigene externe Tabelle mit eigenen Klassen verwendet werden (leere Version rauskopierbar)Klassen verwendet werden (leere Version rauskopierbar)
Jede Klasse erhält ein Ereignisobject mit EigenschaftenJede Klasse erhält ein Ereignisobject mit Eigenschaften Es können Filter- oder Handler-Klassen sein wie folgt:Es können Filter- oder Handler-Klassen sein wie folgt:
Handler
Execute( oEvent )
FilterallowToContinue
Execute( oEvent )
Handler und FilterHandler und Filter
Filters (Filters (FF):): Werden in Reihenfolge zuerst abgearbeitetWerden in Reihenfolge zuerst abgearbeitet Setzen RückgabeflagSetzen Rückgabeflag Können den Vorgang abbrechen und zum Designer Können den Vorgang abbrechen und zum Designer
zurückkehrenzurückkehren
Handlers (Handlers (HH):): Werden für Ereignisse/Objekte angemeldetWerden für Ereignisse/Objekte angemeldet Zuordnung jeweils nur einmalig möglich (nur einer…) Zuordnung jeweils nur einmalig möglich (nur einer…)
Exit Handlers (Exit Handlers (XX):): Werden zum Abschluss aufgerufenWerden zum Abschluss aufgerufen
Nachtrag: DirektaufrufNachtrag: Direktaufruf
DO (_REPORTBUILDER) WITH ...DO (_REPORTBUILDER) WITH ...
Optionendialog: Optionendialog: [1][1]
Browse von FRX-Datei:Browse von FRX-Datei: 2 [, cFileName]2 [, cFileName]
Festlegung Lookuptabelle:Festlegung Lookuptabelle: 3 [, cRegFile]3 [, cRegFile]
Aufrufmodus einstellen:Aufrufmodus einstellen: 4 , iMode4 , iMode
Interne Lookuptabelle:Interne Lookuptabelle: 5 , cTableToCreate5 , cTableToCreate
Eintragung unter Extras:Eintragung unter Extras: 66
Online-QuerverweiseOnline-Querverweise
06-22 Berichtstoolbars (gilt nur bis VFP 8.0)06-22 Berichtstoolbars (gilt nur bis VFP 8.0) 11-01-08 Reportbehavior9011-01-08 Reportbehavior90 05-23 Der Report Writer von Visual FoxPro 905-23 Der Report Writer von Visual FoxPro 9 05-24 Was ist neu im Berichtsgenerator05-24 Was ist neu im Berichtsgenerator Neu: PDF – Power to the PeopleNeu: PDF – Power to the People
Von Lisa Slater NichollsVon Lisa Slater Nicholls Ergänzungen zum Buchtitel Reportwriter für 8&9Ergänzungen zum Buchtitel Reportwriter für 8&9 Alle Beiträge sind im dFPUG-Portal verfügbarAlle Beiträge sind im dFPUG-Portal verfügbar
Weiterführendes MaterialWeiterführendes Material
Visual FoxPro 9.0Visual FoxPro 9.0 Updatebuch (3 Report-Kapitel)Updatebuch (3 Report-Kapitel) Roadshow-CDRoadshow-CD Lokalisierungs-CDLokalisierungs-CD
Visual FoxPro 8.0Visual FoxPro 8.0 UpdatebuchUpdatebuch Deutsche HilfedateiDeutsche Hilfedatei
Online-Angebote der dFPUGOnline-Angebote der dFPUG Forum, Portal, eNewsletter, Homepage, WikiForum, Portal, eNewsletter, Homepage, Wiki
Teil 7: Arbeiten mit FormularenTeil 7: Arbeiten mit Formularen
Mittwoch, 14.9.2005, 16:00 – 17:00 UhrMittwoch, 14.9.2005, 16:00 – 17:00 Uhr Beschreibung: Mit dem Formulardesigner der Beschreibung: Mit dem Formulardesigner der
objektorientierten Entwicklungsumgebung Microsoft objektorientierten Entwicklungsumgebung Microsoft Visual FoxPro kann man problemlos auch Visual FoxPro kann man problemlos auch komplexeste Formulare für Datenbankanwendungen komplexeste Formulare für Datenbankanwendungen erstellen. In der neuen Version wurde nicht nur das erstellen. In der neuen Version wurde nicht nur das Eigenschaftsfenster und IntelliSense wesentlich Eigenschaftsfenster und IntelliSense wesentlich erweitert, sondern es werden auch eine Vielzahl neuer erweitert, sondern es werden auch eine Vielzahl neuer Möglichkeiten im Bereich der grafischen Ausgabe Möglichkeiten im Bereich der grafischen Ausgabe zur Verfügung gestellt.zur Verfügung gestellt.. .
Teil 8: Arbeiten mit WerkzeugenTeil 8: Arbeiten mit Werkzeugen
Mittwoch, 21.9.2005, 16:00 – 17:00 UhrMittwoch, 21.9.2005, 16:00 – 17:00 Uhr Beschreibung: In diesem Webcast stellen wir Ihnen Beschreibung: In diesem Webcast stellen wir Ihnen
einige der umfangreichen und leistungsfähigen einige der umfangreichen und leistungsfähigen Werkzeuge von Visual FoxPro vor. In der neuen Werkzeuge von Visual FoxPro vor. In der neuen Version hinzugekommene oder erweiterte Werkzeuge Version hinzugekommene oder erweiterte Werkzeuge wie zum Beispiel den Klassenbrowser und die wie zum Beispiel den Klassenbrowser und die Taskpane oder auch bereits bekannte leistungsfähige Taskpane oder auch bereits bekannte leistungsfähige Werkzeuge wie die Taskliste, die Codereferenz und Werkzeuge wie die Taskliste, die Codereferenz und weitere Tools. weitere Tools.
Vielen Dank!Vielen Dank!
Fragen an hotline@dfpug.deFragen an hotline@dfpug.deoder besser http://forum.dfpug.de oder besser http://forum.dfpug.de
Besuchen Sie unsere Webseiten: Besuchen Sie unsere Webseiten: http://www.dfpug.dehttp://www.dfpug.de, , http://portal.dfpug.dehttp://portal.dfpug.de, , http://forum.dfpug.dehttp://forum.dfpug.de, ,
http://newsletter.dfpug.dehttp://newsletter.dfpug.de, , http://devcon.dfpug.dehttp://devcon.dfpug.de, , http://roadshow.dfpug.de, http://www.visualextend.de, http://roadshow.dfpug.de, http://www.visualextend.de,
http://www.linuxtransfer.de, http://www.visualfoxpro.de http://www.linuxtransfer.de, http://www.visualfoxpro.de