Laden...

Daten aus mehren DataSets einem Report hinzufügen?

Erstellt von tristar vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.866 Views
T
tristar Themenstarter:in
98 Beiträge seit 2016
vor 7 Jahren
Daten aus mehren DataSets einem Report hinzufügen?

Hallo,

ich versuche gerade einen Bericht mit Hilfe des Report Viewers zu erstellen.
Dazu binde ich meine Klassen als Objekte ein.
So kann ich dann auch ein DataSet zum Bericht hinzufügen und die gewünschten Daten werden angezeigt. Soweit so gut.

Jetzt möchte ich aber noch Daten aus einem anderen DataSet (also eine andere Klasse) dem Bericht hinzufügen. Das Hinzufügen des DataSet klappt auch, nur wenn ich nun ein Datenfeld hinzufüge und das Projekt starten möchte, so erhalte ich die Fehlermeldung

Fehlermeldung:
Ein Ausdruck für ein Berichtselement kann nur auf Felder verweisen, die sich im aktuellen Datasetbereich oder, wenn der Ausdruck zu einer Aggregatfunktion gehört, im angegebenen Datasetbereich befinden.

Geht es nicht, dass ich Daten aus mehren DataSets einem Bericht hinzufüge?
Oder wie kann ich das Problem lösen?

Danke euch!

3.825 Beiträge seit 2006
vor 7 Jahren

Das geht, aber Du musst alle Felder und Datasets in der Datenquelle angeben.

Pro Tablix kannst Du nur auf Felder eines Datasets zugreifen.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

T
tristar Themenstarter:in
98 Beiträge seit 2016
vor 7 Jahren

Das geht, aber Du musst alle Felder und Datasets in der Datenquelle angeben.

Blöde Frage, aber WO muss ich es in der Datenquelle angeben?
In der XML Datei des Report steht bei DataSource nur der Ordner "Classes", in welchem meine Klassen sind.


<DataSource Name="Classes">
      <ConnectionProperties>
        <DataProvider>System.Data.DataSet</DataProvider>
        <ConnectString>/* Local Connection */</ConnectString>
      </ConnectionProperties>
      <rd:DataSourceID>xxx</rd:DataSourceID>
    </DataSource>

Im Header (Textfelder) sollen Daten aus DataSet1 verwendet werden, im Textkörper (Tablix) sollen dann Daten aus DataSet2 verwendet werden.

87 Beiträge seit 2016
vor 7 Jahren

Hallo,

im Reportdesigner in den Berichtsdaten im Punkt Datasets das Dataset hinzufügen.

glandorf

S
1 Beiträge seit 2017
vor 7 Jahren

Hallo zusammen,
das gleiche Problem beschäftigt mich als Neuling in Sachen rdlc auch gerade. Beim Stöbern im Netz bin ich auf diese freundliche Community bzw. den Thread aufmerksam geworden. Also gleich mal angemeldet. 😉

Gibt es noch andere Möglichkeiten, als eigene Datasets zu definieren?

Ich habe eine Bestandsanwendung, für die Reports erzeugt werden sollen.

Datenbankstruktur in deutlich vereinfachter Form:
Kunde (ID, Firma, ID_Adresse_FK, Ansprechpartner, usw.)
Adresse (ID, ID_Ort_FK, Strasse, Hausnummer, ...)
Ort (ID, PLZ, Ort, ...)

Und bestimmte Kunden z.B. mit offenen Rechnungen sollen listenweise ausgegeben werden mit kompletter Adresse.
...

Zu jeder Datenbanktabelle gibt es eine entsprechende Klasse mit Properties (Entity Framework). Entsprechend gibt es einen großen Objektbaum mit allen möglichen Daten.
Im rdlc-Template habe ich die benötigten Klassen als Datenquelle ausgewählt. Die Datasets im Bericht (DataSetKunde, DataSetAdresse, DataSetOrt) stellen die Felder dann zur Verfügung. Das funktioniert nur soweit, dass ich aus dem Kunden-Dataset über die Lookup-Funktion auf das Adress-Dataset Straße und Hausnummer herausfinden kann, nicht jedoch Ort und Postleitzahl. Über die ID vom Ort komme ich nicht weiter an Ortsnamen und PLZ heran (Lookups im Lookup innerhalb eines Tablixes verboten).

Die Lösungsmöglichkeiten für dieses Problem sind mir noch nicht klar. Subreports wären wohl eine Möglichkeit mit Übergabe einer Adress-ID als Parameter. Dies finde ich aber alles andere als schön, in Fließtext wie einer Firmenanschrift Subreports einzufügen. Ist die einzige andere Möglichkeit, neue Objektstrukturen inkl. Datasets aufzubauen (z.B. aus einem View heraus) mit allen Properties, die für die aktuelle Ausgabe benötigt werden? Können über benutzerdefinierter Code im Bericht vielleicht Daten mehrerer DataSets ausgegeben werden oder helfen irgendwelche Gruppierungsfunktionen?

Die Möglichkeiten in den Reporting Services sind für mich gerade ziemlich erschlagend.

Grüße Robert

16.806 Beiträge seit 2008
vor 7 Jahren

Kann gut sein, dass Du an dieser Stelle aufgrund Deines Schemas ein eigenes DataSet aufbauen musst und nicht direkt auf die Quelle kannst.
Leistungsfähiger wäre hier halt Power BI.