In diesem Artikel wird beschrieben, wie Crystal Report 7 über ActiveX in Visual dBASE 7 eingebunden werden kann. Crystal Report 7 kann auch das neue DBF-Tabellen-Format Level 7 verarbeiten, da über die BDE auf die Tabellen zugegriffen wird. Zu beachten ist, das der Druck von Memofeldern einen PrimaryKey in der Tabelle benötigt.
Mit dem Installieren von Crystal Report wird auch das ActiveX-Modul, Crystal Report Control, mitgeliefert. Zum Einbinden in VdB ist nach dem Öffnen einer Form, unter Datei, das Einrichten von ActiveX-Modulen in VdB möglich. Wir wählen Crystal Report Control aus. Damit steht es im Komponentenfenster unter der Karteikarte ActiveX zur Verfügung. Durch einfaches Ziehen auf die Form ist das Modul in die Form eingebunden. Fertig das war es, oder fast.
Da Drucken meist nach einem EVENT beginnt, ist der Aufruf des Moduls am besten dort einzubinden.
Hier ein Beispiel:
Function Pushbutton1_onclick
Class::Drucke_Mit_Crystal()
Return
Function Drucke_Mit_Crystal
Form.activex1.Nativeobject.ReportFileName="Myreport.rpt"
Form.activex1.Nativeobject.CopiesToPrinter=1
Form.activex1.Nativeobject.destination=0
Form.activex1.Nativeobject.windowcontrols=true
Form.activex1.Nativeobject.windowShowPrinterSetupBtn=true
Form.activex1.Nativeobject.windowTitel="Testreport"
Form.activex1.Nativeobject.windowShowGroupTree=true
Form.activex1.Nativeobject.WindowSearchBtn=true
Form.activex1.Nativeobject.action=1
Return
Betrachten wir das Ganze einmal:
Form.activex1.Nativeobject ist die Referenz auf das mit
This.activex1 = New ACTIVEX(this)
endwith
eingebundene ActiveX Modul. Netter weise erledigt das VdB 7.x für uns ganz alleine, sobald wir das AktiveX-Modul auf unsere Form gezogen haben. Das Zeichen für das ActiveX-Modul bleibt auch nach der Compilierung sichtbar. Das ist aber durch die Auslagerung auf eine nicht sichtbare Seite zu umgehen.
Der Zugriff auf das ActiveX-Modul erfolgt über
[form.]NativeObject.[Methode]
Einige dieser Methoden seien hier aufgeführt.
ReportFileName
Übergibt den Namen des Reports an
das Modul.
CopiesToPrinter
Soll die Kopienanzahl übergeben.
(Im Viewer werden sie jedoch nicht angezeigt)
Destination
Ziel des Reports, wobei 0 = Window (Preview-Fenster)
1 = Printer 2 = File 3 = E-Mail 6 = Exchange-Folder ist.
WindowControls
Schaltet die Printer Control-Buttons im
Preview-Fenster ein/aus.
WindowShowPrinterSetupBtn
Zeigt den Button für die Druckereinrichtung
WindowTitel
Übergibt eine Fensterüberschrift.
WindowShowGroupTree
Schaltet den Gruppenbaum ein/aus.
WindowSearchBtn
Schaltet die Suchmöglichkeit im Preview-Fenster
ein/aus.
Action
Startet das ActiveX-Modul mit den Voreinstellungen.
Die Übersicht über die verfügbaren Methoden sind in der Developer Hilfe von Crystal-Reports enthalten. Die Beispiele sind in VB gehalten. Anzumerken ist, das einige Methoden nicht zu den gewünschten Ergebnissen führen. Zum Beispiel, ist es mir nicht gelungen mit der Methode Datafiles(n), die im Report angegebenen Pfade zu ändern.
Die zur Weitergabe benötigten Dateien werden in der Runtime Hilfe beschrieben. Das ActiveX-Modul muss mit REGSVR32.EXE CRYSTL32.OCX auf jedem Rechner installiert werden. Das wird aber durch den InstallShield erledigt. Die Vorgehensweise ist beschrieben in der Ausgabe Nr. 4 des dBASE Developer Bulletins, Artikel “InstallShield Express für Visual dBASE 7, Kap. 1.3”.
Eines sei noch erwähnt, mit Crystal ist es auch möglich die Reports als EXE zu compilieren. Das geht dann fast ohne Programmierung.
Michael Kusch arbeitet seit 1993 mit dBASE, und entwickelt kaufmännische Anwendungen mit Visual dBASE.
Michael Kusch
EDV-Service
81245 München
Tel.: 089-89712763
Fax: 089-89712290
100277.2335@CompuServe.com