Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Crystal Reports mit DataSets befüllen - Teil 2

Geschrieben von: Rudolf Ball
Kategorie: ADO.NET

DataSets bieten sich als Quelle für den Inhalt eines Reports an, da sie von der Datenbank disconnected sind. Doch es ist ein wenig knifflig, dieses DataSet hinter den Report zu schieben. Wie man einen solchen Report erstellen kann, lernen Sie heute im zweiten Teil dieser Artikelserie.

Für einen Systemüberblick lesen Sie bitte den ersten Teil dieser Artikelserie.

Der Report - Teil 1

Die Erstellung des Reports geschieht über einen Wizard. Wenn wir einen neuen Report hinzufügen ("Add new Item" -> "Crystal Report") müssen wir uns zuerst entscheiden, ob wir den Report Expert oder eine leeren Report erzeugen wollen. Der Einfachheit halber entscheiden wir uns für den Expert.

Nun, da wir in weiterer Folge keine Datenbank zu Grunde liegen haben, sondern ein DataSet, müssen wir dem Report dessen Struktur mitteilen. Da wir dem Report aber nicht sagen können "Nimm DataSet XY!" (da wir dieses noch nicht einmal erzeugt haben - dies geschieht erst zur Laufzeit), müssen wir uns eines Abbildes der Struktur des DataSets bedienen: einem XML Schema. XML Schemas (Extension .xsd) beschreiben die Struktur von XML Files und somit auch von DataSets.

Da wir dieses XML Schema File nur genau einmal zur Definition der Datenstruktur unseres DataSets im Report benötigen bieten sich zwei Möglichkeiten an, das File zu erzeugen. Einerseits zur Laufzeit mittels einer "File.Exists" Abfrage, welche nur beim ersten Mal feuert. Wir benötigen das XML Schema jedoch zur Designzeit. Daher ist es nützlich, eine kleine und schnelle Applikation zu schreiben, welche uns vom gewünschten DataSet ein XML Schema erzeuget, und wir nach Erzeugung dessen ungestört mit dem Design fortfahren könnten. Der Code für diese Konsolenapplikation folgt.

Konsolenapplikation zur Erzeugung eines DataSets - DataSet2XSD.cs

In die Konsolenapplikation DataSet2XSD müssen wir die Datenklasse DataSet4Report kopieren, um das gleiche DataSet zu erhalten. Die Main Methode sieht wie folgt aus.

static void Main(string[] args)
{
   try
   {
      DataSet4Report myDS4R = new DataSet4Report();
      DataSet myDS = myDS4R.Kochrezept(1);
      myDS.WriteXmlSchema("C:/inetpub/wwwroot/DataSet4Report/Kochrezept.xsd");
   }
   catch (Exception ex)
   {
      Console.WriteLine(ex.Message);
      Console.ReadLine();
   }
}

Als erstes erzeugen wir eine Instanz unserer Klasse DataSet4Report und füllen ein DataSet mit Hilfe der Methode Kochrezept. Der Export als XML Schema ist trivial und erfolgt über die Methode WriteXmlSchema. Der Eingabeparameter ist in diesem Fall unser lokaler Pfad am Webserver. Nun können wir mit dem Design unseres Reports fortsetzen.

Der Report - Teil 2

Über "More Data Sources" gelangen wir in den Menüpunkt "ADO.NET (XML)".

Hier hilft uns ein Dateidialog, das soeben erzeugte XML Schema zu finden.

Nach Auswahl der Datei Kochrezept.xsd werden uns die Tabellen des DataSets präsentiert.

Hier müssen wir die Tabellen "Rezept" und "Zutaten" markieren und mittels "Insert Table" hinzufügen. Nach dem Klick auf "Next" gelangen wir auf folgende Seite.

Hier wird uns die Struktur der Tabellen und vor allem deren Relationen angezeigt. Sollten wir noch kein Relationsobjekt erstellt haben hätten wir hier die Möglichkeit, dies manuell nachzuholen.

Im nächsten Schritt müssen wir die Felder definieren, die wir am Report anzeigen wollen. Mittels "Add" wählen wir aus der Tabelle Rezept "Rezeptname" und "Zubereitungszeit" und aus der Tabelle Zutaten "Zutat" und "Kosten". Somit haben wir alles Wichtige angegeben und können uns auf das Design des Reports konzentrieren. Hierzu müssen wir einen "Detail" Bereich einfügen und Zutat und Kosten in selbigen einfügen. Dies geht entweder durch Verschieben oder durch "Drag and Drop" vom Field Explorer auf der linken Seite. Sollten Sie links keine Field Explorer sehen, verzweifeln Sie nicht: Sie können ihn über View -> Other Windows -> Document Outline bzw. Ctr + Alt + T aktivieren. Eine Lösung hierfür würde wie folgt aussehen.

Somit haben wir alle Schritte ausgeführt, welche zum Erreichen des Ergebnisses von Nöten sind. Mit dieser Formatierung würde der Report wie der folgende Beispielreport aussehen.

Sie können das Rezept natürlich nachkochen, dafür übernehme ich jedoch keine Verantwortung...

Vorschläge und Einschränkungen

Natürlich bietet es sich nicht in jedem Fall an, ein DataSet als Quelle für den Report zu verwenden. Vielmehr ist bei der Anzeige von nicht hierarchischen Daten eine direkte Anzeige der Datenbanktabelle bzw. Query einfacher. Auch ist die Anzeige in Crystal Reports nicht immer die optimale Lösung, Konkurrenzprodukte sind meist mächtiger und besser handzuhaben. Natürlich ist der Export von Crystal Reports ins Word- oder PDF Format eine gelungene Alternative.

Schlußbemerkung

Ein DataSet hinter Crystal Reports zu schieben ist eine gute Alternative zur Direktverbindung mit der Datenbank. Es ist zwar ein wenig aufwendiger, aber es lohnt sich vor allem dann, wenn Sie mehrere Reports anzeigen wollen oder hierarchische Daten einfach und sicher angezeigt bekommen möchten. Auch die Manipulation der Daten vor dem Anzeigen ist ein Punkt, der Ihnen womöglich schon Kopfzerbrechen bereitet hat.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Crystal Reports mit DataSets befüllen - Teil 1
Datenbankzugriff mittels ADO.NET
Was sind XML Schemas?

Links zu anderen Sites

Creating Professional Reports using Crystal Report for Visual Studio.NET
Crystal Report 9 – The Visual Studio .NET Reporting Standard
Crystal Report for Visual Studio .NET
Loading a DataSet with Data from Multiple Tables
XML Schemas vs. DTDs

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Eine weitere sehr hilfreiche Resource ist das deutsche ASP.NET Wiki, das als zentrale Anlaufstelle für Tips, Tricks, Know How und alles Nützliche was man in seinem Alltag als (ASP).NET-Entwickler so braucht und entdeckt gedacht ist.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.