Viele Anwender benötigen eine Lösung, die Berichte unter Linux-Systemen generiert und auch die Arbeit mit SQL-ähnlichen Datenbanken und mehr unterstützt. Wir verfügen über eine solche Lösung in Form von FastReport.Core. Diese Bibliothek ermöglicht die Erstellung von Berichten unter verschiedenen Linux-Distributionen und bietet die Möglichkeit, sich mit verschiedenen Datenbanken zu verbinden. In diesem Artikel werden wir uns ansehen, wie dies auf einer Debian 10-Distribution mit PostgreSQL implementiert wird.
Installieren Sie zunächst PostgreSQL unter Debian 10. Eine detaillierte Installationsanleitung finden Sie unter dem folgenden Link. Überprüfen Sie, ob Postgres korrekt funktioniert, indem Sie das Terminal aufrufen. Wechseln Sie zum Postgres-Konto, indem Sie den folgenden Befehl eingeben:
$ sudo -i -u postgres
Anschließend schreiben Sie Folgendes, um auf die Postgres-Oberfläche zuzugreifen:
$ psql
Jetzt können wir nun auf die Postgres-Befehlszeile zugreifen und haben zusätzlich überprüft, dass sie funktioniert.
Fügen Sie das Passwort für den Postgres-Benutzer anstelle von „password123“ hinzu:
ALTER USER postgres WITH PASSWORD ‘password123’
Erstellen Sie eine Testtabelle:
CREATE TABLE test (city varchar(80), temp_lo int, temp_hi int);
Und füllen Sie sie mit Daten aus:
INSERT INTO test VALUES ('Chicago',30,40);
Fertig! Prüfen Sie nun die Tabelle mit folgendem Befehl auf Daten. Das Ergebnis ist in der folgenden Abbildung dargestellt.
SELECT * FROM test;
Um eine Anwendung auf .NET 5.0 zu erstellen, müssen Sie DotNet selbst installieren. Gehen Sie auf die Seite mit der detaillierten Installationsanleitung studieren Sie alle notwendigen Punkte sorgfältig. Sie können den VS-Code unter diesem Link herunterladen, um bequemer damit arbeiten zu können. Laden Sie dann das deb-Paket herunter und installieren Sie es auf Ihrem Computer.
Laden Sie im VS-Code selbst die C#-Plugins und Nuget Gallery herunter. Letzteres wird für die einfache Suche und korrekte Installation von Nuget-Paketen benötigt.
Erstellen Sie ein Projekt im VS-Code, dazu drücken Sie Strg + J, um eine Konsole im VS-Code zu öffnen. Geben Sie dann diesen Befehl ein:
dotnet new console
Der nächste Schritt nach dem Erstellen des Projekts ist das Herunterladen und Installieren der erforderlichen Bibliotheken. Öffnen Sie nach Abschluss der vorherigen Schritte die Nuget Gallery im Testprojekt.
Suchen Sie nach FastReport.Core und installieren Sie es. Vergewissern Sie sich, dass das Kästchen Prerelease angekreuzt ist, da es sich bei diesem Paket um eine Demoversion handelt, andernfalls wird es nicht angezeigt.
Da es sich bei dem Konnektor nicht um eine Demoversion handelt, brauchen Sie das Kästchen Prerelease nicht anzukreuzen. Suchen Sie einfach nach FastReport.Data.Postgres und installieren Sie es auf die gleiche Weise wie das vorherige Paket.
Nachdem Sie alle erforderlichen Komponenten installiert haben, öffnen Sie Program.cs in Ihrem Projekt und fügen Sie den folgenden Code in die main-Methode ein:
using System; using FastReport; using FastReport.Data; using FastReport.Utils; using FastReport.Export.Pdf; static void Main(string[] args) { //Aufbau der Verbindung zu PostgreSQL RegisteredObjects.AddConnection(typeof(PostgresDataConnection)); PostgresDataConnection connection = new PostgresDataConnection(); connection.ConnectionString = "Host=localhost;Username=postgres;Password=1234;Database=postgres"; connection.CreateAllTables(); //Berichterstellen und Verbinden der Datenbank und der Tabelle mit dem Bericht Report report = new Report(); report.Dictionary.Connections.Add(connection); connection.Enabled = true; foreach(TableDataSource table in connection.Tables) { if(table.Name == "public_test") { table.Enabled = true; } } ReportPage page = new ReportPage(); report.Pages.Add(page); page.CreateUniqueName(); DataBand dataBand = new DataBand(); page.Bands.Add(dataBand); dataBand.CreateUniqueName(); //DataBend unsere Tabelle zuweisen dataBand.DataSource = report.GetDataSource("public_test"); dataBand.Height = Units.Centimeters * 0.5f; TextObject City = new TextObject(); City.CreateUniqueName(); City.Bounds = new System.Drawing.RectangleF(0,0,100,100); City.Parent = dataBand; //Dem Textobjekt Werte aus dem DB-Feld zuweisen City.Text = "[public_test.city]"; TextObject temp_lo = new TextObject(); temp_lo.CreateUniqueName(); temp_lo.Bounds = new System.Drawing.RectangleF(150,0,100,100); temp_lo.Parent = dataBand; temp_lo.Text = "[public_test.temp_lo]"; TextObject temp_hi = new TextObject(); temp_hi.CreateUniqueName(); temp_hi.Bounds = new System.Drawing.RectangleF(300,0,100,100); temp_hi.Parent = dataBand; temp_hi.Text = "[public_test.temp_hi]"; report.Prepare(); PDFExport pDF = new PDFExport(); pDF.Export(report,"test.pdf"); }
Kompilieren und starten Sie unser Projekt. Es generiert diese PDF-Berichtsdatei:
Die Schlussfolgerung ist ganz einfach. Eine Datenbank mit Ihrer eigenen Anwendung zu verbinden ist überhaupt nicht schwierig. Gerade heute haben wir einen Bericht erstellt, der Daten aus einer PostgreSQL-Datenbank in der Debian 10 Distribution verwendet.