+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

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


(Michael Holder) #1

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


(combit Support - Christian Rauchfuß) #2

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