Mein Blog

ReportViewer mit mehreren DataSets ohne Unterbericht

Wenn man immer nur dem Assistenten im Visual Studio folgt, kann man immer nur ein Dataset pro Bericht bearbeiten. Es ist aber selbstverständlich möglich auch mehrere zu benutzen.

Ein Blick in das, was der Designer so entwirft gibt hier schon die Lösung 🙂

Zu erst benötigt man natürlich ein Dataset mit mehreren DataTables

Im Bericht selbst legt man ein weiteres Dataset an – was ganz einfach per Rechtsklick funktioniert. Den Namen, den man für das “interne” DataSet vergibt sollte man sich merken (Strg+C) – den brauchen wir später noch.

Nachdem das nun alles gemacht ist, müssen wir die Verbindung zwischen DataSet und Bericht hinbekommen.. das geht mit einem 3-Zeiler 😛
Vorweg: Man kann die Zuweisung der Daten auch direkt gestalten.. indem man die Tabelle übergibt, ich finde den Weg über ein BindingSource-Element aber besser da so Filter und Sortierungen leichter möglich sind.

Erstellen des BindingSource-Elements (sollte global definiert werden um es später auch ändern zu können)

BindingSource auslastungNachMonatenBindingSource2 = 
 new BindingSource {
   DataSource = _ds, 
   DataMember = "VerträgeJeGerät" 
};

Nun benötigen wir ein ReportDataSource-Element. Dies definiert eben die Schnittstelle zw. Datenquelle und Bericht. Hier muss bei Name der Name verwendet werden wie wir das DataSet im Bericht genannt haben (siehe oben wo ich “merken” geschrieben habe).

ReportDataSource reportDataSource2 = 
 new Microsoft.Reporting.WinForms.ReportDataSource 
  { 
    Name = "Verträge", 
    Value = auslastungNachMonatenBindingSource2 
  };

Wir oben angekündigt könnte hier der Value auch auf eine DataTable zeigen.

Jetzt muss man die Quelle dem Bericht nur noch bekannt machen:

reportViewer1.LocalReport.
 DataSources.Add(reportDataSource2);

Ganz ausführlich findet man ein Anleitung hier. So nun noch schnell selber testen….. Jo geht 😉

Die mobile Version verlassen