Sind beim DbCommandSetDataProvider Relationen über mehrere Spalten möglich?

Hallo Forum,

da meine Datenquelle keine Relationen mitbringt möchte ich den DbCommandSetDataProvider nutzen, um zwei Tabellen miteinander zu verknüpfen.

Die erste Tabelle “AngPosition” enthält 1 oder mehrere Positionen, die zweite Tabelle “AngPositionElement” enthält 1 oder mehrere Artikel, die in den Positionen angeboten werden, z. B.:
Position 1, bestehend aus:
1 x Artikel A
3 x Artikel B
Position 2, bestehend aus:
2 x Artikel A
4 x Artikel B

Die Eindeutigkeit des Datensatzes erstreckt sich aber über 5 Spalten:
Jahr, lfdNr, Wiederholungsnummer, Alternativkennzeichen und Positionsnummer
z.B. 15|0815|0|A|1

Da ich beim DbCommandSetDataProvider keine Möglichkeit sehe Relationen über mehrere Spalten zu bilden, habe ich in den SQL-Commands Ergebnisspalten gebildet die das Ergebnis der 5 Spalten zusammengesetzt bilden.

Dim Command1 As New SqlCommand("Select ltrim(str(NrJahr,2)) + ltrim(str(NrNummer,5)) + ltrim(str(NrWiederholung,2)) + ltrim(str(Position,5)) + NrAlternative as Angebotsnummer, ...
Dim Command2 As New SqlCommand("Select ltrim(str(NrJahr,2)) + ltrim(str(NrNummer,5)) + ltrim(str(NrWiederholung,2)) + ltrim(str(Position,5)) + NrAlternative as Angebotsnummer, ...

Dim lalProvider As New DbCommandSetDataProvider

lalProvider.AddCommand(Command1, "AngPosition")
lalProvider.AddCommand(Command2, "AngPositionElement")
   
lalProvider.AddRelation("Position2Element", "AngPosition", "AngPositionElement", "Angebotsnummer", "Angebotsnummer")

lalAngebot.DataSource = lalProvider

Funktioniert prinzipiell, aber leider werden im Ausgabeformular in jeder Position jeweils alle Elemente aller Positionen ausgegeben, z. B.:
Position 1, bestehend aus:
1 x Artikel A
3 x Artikel B
2 x Artikel A
4 x Artikel B
Position 2, bestehend aus:
1 x Artikel A
3 x Artikel B
2 x Artikel A
4 x Artikel B

Welche Möglichkeiten gibt es hier noch die Relationen zu setzen (außer direkt in der Datenbank) oder das Problem anders zu lösen?

Danke und Gruß,
Michael Holder

Hallo Herr Holder,

vielen Dank für Ihren Beitrag.

Bitte prüfen Sie, ob eine Tab-getrennte Übergabe der Felder bei AddRelation Abhilfe schafft. Also alle fünf Felder hintereinander.

Mit freundlichen Grüßen

Christian Rauchfuß
Technischer Support
combit GmbH