Eine der Fragen, die der Entwickler am Anfang der Erschließung von FastReport .Net löst, ist eine Datenverbindung zum Bericht. Zum Glück hat dieser Berichtsgenerator ein natives Interface vom integrierten Designer. Aber in Rahmen dieses Artikels möchte ich über die Verbindung mit einer Datenquelle innen des Berichts erzählen. Ich erzähle heute, wie man ins Bericht eine Connectionszeile aus der Benutzers Anwendung übergibt. Aus diesen Gründen wird der Artikel an zwei Teilen eingeteilt: Verbindung mit einem Datenlager innen des Berichts und Übergabe der Connectionszeile ins Bericht.
Betrachten wir jetzt ein Beispiel. Erstellen wir eine Datenquelle. Im geöffneten Fenster wählen wir "New Connection". Man kann verschiedene Verbindungsarten wählen, sogar eine Verbindung mit dem XML-Datenlager. Ich verwende eine altmodische MS Access Connection.
Weiter schlagt man vor, die Tabellen zu wählen, mit denen wir weiter uns beschäftigen. Aber man kann auch mit Hilfe aus der SQL-Anfrage die Daten wählen (für xml unverfügbar). Dazu steht ein visueller Aufruf-Konstruktor zur Verfügung. Übrigens gibt es keine Hindernisse, einen Aufruf mit der Hand zu schreiben.
Beim nächsten Schritt kann man die Anfrageparameteren eingeben. Weiter - die Spaltentypen nochmal bestimmen,
Also, ich wählte zwei Tabellen: employee und orders. Die kann man durch den Feld EmpNo. verbinden. Um das zu realisieren, öffnen wir ein Dropdown-Menu „Action“ im Fenster „Daten“ und wählen wir New relation.
Elterntabelle – employee, Tochtertabelle – orders. Verbinden wir diese zwei Tabellen durch das Feld EmpNo.
Zu welchem Zweck haben wir das gemacht? Jetzt können wir eine Bestellungsliste für jeden Mitarbeiter erstellen. Machen wir eine ganz einfache Berichtsschablone.
Hier enthält der Datenbereich einen Feld „Daten“ für weitere Detalisierung. Wie man sieht – in erstem Feld stellt man den Vor- und Nachname des Mitarbeiters dar, in zweitem – einige Bestellungsdaten.
Man kann den Datenbereich „Daten“ entweder vom Kontextmenu des genauen Datenfeldes, oder im Fenster vom Feldskonstruktor hinzufügen.
Wenn man einen Doppelklick auf dem ersten Feld „Daten“ macht, sieht man, dass die Tabelle employee als Datenquelle gewählt wurde. Für den zweiten Datenbereich „Daten“ - orders. Die Datenquelle wählt man automatisch, beim Feldhinzufügen in den leeren Datenbereich. Aber die Quelle kann mit der Hand geändert werden.
Wenn keine Datenquelle eingegeben wird, werden keine Daten dargestellt. Genauer, wird nur die erste Datenzeile für die hinzufügte Felder auf dem Bildschirm. Speichern wir den Bericht.
2. Betrachten wir jetzt noch eine interessante Besonderheit – die Übergabe der Connectionszeile zum Datenlager aus der Benutzers Anwendung.
Erstellen wir eine Windows Forms Anwendung. Fügen wir eine Komponente Report vom Tab FastReport .Net und die Taste hinzu.
Die Übergabe der Connectionszeile ins Bericht aus der Anwendung.
Am Anfang modifiziert man früher erstellten Bericht. Öffnen wir ihn im Designer.
Erstellen wir einen Berichtsparameter, in den wir die Connectionzeile übergeben. Im Fenster „Daten“ suchen wir das Element „Parameters“. Einen Klick mit der rechten Maustaste auf ihm – Neuer Parameter (New parameter). Im Fenster geben wir einen Namen des Parameters ein – conn.
Jetzt wählen wir eine Verbindung im Fenster „Daten“. Unten, im Eigenschaftenfenster finden wir die Variable „ConnectionStringExpression”, in die wir von uns erstellten Parameter hinzufügen.
Jetzt Schluss. Der Bericht ist jetzt modifiziert. Speichern wir ihn und kehren zum Programm zurück.
Klicken wir zweimal auf die Taste „Run“. Fügen wir einen folgenden Anwendungscode in den Druckeventsbearbeiter der Taste hinzu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
private void RunBtn_Click(object sender, EventArgs e) { using (Report report = new Report()) { report.Load(ReportPath); ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DBPath + ";User ID=Admin"; report.SetParameterValue("conn", ConnStr); report.Show(); } } |
Vor dem Start der Anwendung erklärten wir die Variablen für Speichern der Adressen von Bericht und Datenlager.
Beim Tastendruck erstellt man ein Exemplar der Klasse „Report“. Weiter herunterladen wir den Bericht. Bestimmen wir die Variable mit der Connectionzeile und setzen wir diesen Wert zum Berichtsparameter ein. Schluss damit, starten wir den Bericht.
Also, jetzt stellen wir fest, dass es sehr einfach ist, einen Bericht mit den Daten zu verbinden. Außerdem kann der Bericht mit fast beliebigem Datenlager verbindet werden. Beim Bedarf, kann man ins Bericht die Connectionzeile übergeben. Es ist bequem, wenn, zum Beispiel, der Anwender selbst den Platz für den Datenlager auf dem lokalen Speicher wählt.