FastReport VCL 28.01.2021, 08:02 Uhr

Berichte unter Delphi von Windows nach Linux migrieren

Ein Zwischenschritt macht die Migration einfacher.
(Quelle: dotnetpro)
Nehmen wir an, Sie sind Delphi-Entwickler mit vieljähriger Erfahrung. Dann kommt der Tag, an dem Sie mit Ihrem Team den Umstieg von Windows nach Linux machen sollen. Nur, welche Plattform soll Ihr Team wählen? Sie entscheiden sich für Lazarus! Lazarus unterstützt VCL-Technologie (Visual Component Library) und Ihre VCL Apps werden auf neue Plattform migriert. Diese Migration ist nicht so einfach. Einige Komponenten werden durch analoge ersetzt. Die Datenbank-Verbindung stellt dagegen kein Problem dar. Allerdings ist die Reporting-Komponente eine Herausforderung. Glücklicherweise unterstützen viele Reporting-Tools-Hersteller diese Migration.
So auch das Reporting Tool FastReport VCL. Es funktioniert in Borland Delphi, RAD Studio und Lazarus. Das bedeutet, dass Sie Berichte auch unter Linux erstellen können. Nur gilt es bei der Migration ein paar Besonderheiten zu beachten:
  • Berichte mit Diagrammen, die Lazarus nicht unterstützt, müssen noch einmal erstellt werden;
  • Wenn Sie Reports haben, die eine Verbindung nur mit einer einzigen Datenquelle haben, dann funktioniert alles problemlos. Sie brauchen dann keine neue Verbindung in jedem Report. Für die Migration sieht das nach der besten Variante aus.
  • Für Windows-Datenbanken wird eine Migration erforderlich. Das gilt beispielsweise für MS Access. Für mdb-Dateien hingegen ist das nicht nötig: Dieses Format funktioniert auch unter Linux.
  • Für Migration gibt es eine spezielle Anwendung. Aber man kann auch eine einfache Copy-Paste-Tasten-Kombination verwenden, was durchaus bequemer ist.
Sie starten unter Windows zwei IDEs nebeneinander: Delphi und Lazarus. Das ist möglich, weil Lazarus auch unter Windows funktioniert.
  • Öffnen Sie in Delphi das Projekt, das migriert werden soll. In Lazarus erstellen Sie ein leeres Projekt.
  • Nun kopieren Sie die Delphi-Form-Komponente [Strg]+[A], [Strg]+[C].
  • Fügen Sie die neue Komponente in die Lazarus-Form ein. Hier kann der Fehler erscheinen, dass die Komponente nicht gefunden wird. Kehren Sie zu Delphi zurück und löschen Sie die Hervorhebung der fehlenden Komponente. Wiederholen Sie das Einfügen.
  • Für eine fehlende Komponente suchen Sie eine analoge in Lazarus und korrigieren den Code des Aufrufs.
  • Kopieren Sie dann den Events Handler.
Beispielsweise haben wir einen FastReport-VCL-Report, der Kundennamen anzeigt. Auf der Delphi-Form haben wir folgende Komponenten wie in Bild 1 zu sehen ist. Die Komponenten sind:
Die Ausgangsform unter Delphi (Bild 1)
Quelle: Autor
  • TButton;
  • TOpenDialog;
  • TfrxReport;
  • TADOConnection;
  • TADOTable;
  • TfrxDBDataSet.
Nun wird ein Dialogfenster geöffnet, um die Schablone zu wählen. Das Tool lädt nun diese Schablone in den Report und zeigt ihn an. Um die Kundenliste anzuzeigen, verwenden Sie eine Verbindung zu einer Access-Datenbank und einen Treiber dafür.
Dazu erstellen wir eine Verbindung zur Demodatenbank C:\Program Files (x86)\FastReport 6 VCL Enterprise\Demos\Main\demo.mdb. Diese Datei finden Sie im Demokatalog von FastReport VCL. In der Komponente ADOTable wählen Sie die Tabelle Customer. Die Komponente frxDBDataSet sowie frxReport befinden sich auf dem Tool-Panel im Tab FastReport 6.0. frxReport braucht man für die Wahl und für die Registrierung der Datenquelle im Report. Im nächsten Schritt füllen Sie den Click Event Handler:
OpenDialog1.Filter:='FastReport file|*.fr3';

if OpenDialog1.Execute then
begin
  frxReport1.LoadFromFile(OpenDialog1.FileName);
  frxReport1.PrepareReport();
  frxReport1.ShowReport();
end;
Starten Sie die App und testen Sie sie mit dem Report aus dem Demokatalog C:\Program Files (x86)\FastReport 6 VCL Enterprise\Demos\Main\1.fr3.
In der Lazarus-IDE erstellen Sie ein neues Projekt und kopieren alle Controls aus Delphi in die Lazarus-Form. Danach erscheint folgende Fehlermeldung (Bild 2):
Fehlermeldung nach dem Kopieren (Bild 2)
Quelle: Autor
Das liegt daran, da Lazarus keine ADO-Komponenten unterstützt. Entfernen Sie die Komponente, die zur Fehlermeldung führt. Es bleiben auf der Form nur Button, OpenDialog und frxReport.
MS Access ist eine native Datenbank von Microsoft und es ist problematisch, sie unter Linux zu starten. Als eine mögliche Lösung können Sie die Datenbank beispielsweise nach SQLite migrieren. Sie finden dafür viele Online-Tools im Internet. Als Ergebnis bekommen Sie eine .sqlite-Datei. Für eine Verbindung zu SQLite müssen Sie zuerst einen Konnektor im System erstellen.
Weiter gehen Sie auf www.sqlite.org fürs Herunterladen der offiziellen Bibliothek und kopieren Sie sqlite3.dll in den Ordner Windows\System32.
Statt ADOConnection fügen Sie die Komponente SQLite3Connection hinzu. In der Eigenschaft DatabaseName wählen Sie die Datei mit dem Typ .sqlite, die wir als Ergebnis der Konvertierung bekommen.
Jetzt fügen Sie eine Komponente SQLTransaction für die Erstellung einer Transaktion und legen die Verbindung zur Datenbank fest. Fügen Sie weiterhin eine Komponente SQLQuery hinzu. Hier definieren Sie die Eigenschaft Database und in der Eigenschaft SQL schreiben Sie folgende Anfrage:
select * from customer
In der Eigenschaft Transaction wählen Sie Transaction.
Als letztes fügen Sie die Komponente frxDBDataSet hinzu und wählen dafür ein DataSet – die SQLQuery-Komponente. Sie können für die Feldnamen auch Aliase verwenden (Bild 3).
Feld-Aliase verwenden (Bild 3)
Quelle: Autor
Jetzt ist die App fertig (Bild 4).
Die angepasste App (Bild 4)
Quelle: Autor
Und los! Wählen Sie .fr3 und Sie sehen das Ergebnis (Bild 5).
Die App mit dem Bericht in Aktion (Bild 5)
Quelle: Autor
Der Report startet ohne Fehlermeldungen, weil dort keine inneren Verbindungen verwendet wurden. Jetzt ist die App zur Migration fertig. Man braucht in diesem Fall nur einfache Korrekturen - zum Beispiel zur Datenbank.
Die Migration ist dann nicht mehr so schwer. Das einfache Kopieren ist besser als das Verwenden der in Lazarus integrierten Tools, denn dort müsste man sich um alle Parameter kümmern.


Das könnte Sie auch interessieren