| |
ADO.NET / DatenbankenDataView über 2 DataTables? | | | Autor: ProXy | Datum: 16.09.08 08:44 |
| Guten Morgen zusammen,
ich habe da ein kleines Problem und hoffe, Ihr könnt mir helfen. Ich hab ein Datagridview, welches Artikelgruppen enthält, die Daten dafür kommen aus einer DataTable, die mit einer DataView gefiltert wird. Abhängig von der SelectedRow im DataGridView werden die Artikel der gewählten Artikelgruppe in einem zweiten DataGridView angezeigt. Hier mal ein Bild, wie es aktuell aussieht:
http://img237.imageshack.us/my.php?image=demois7.jpg
Unter dem zweiten DataGridView steht die Anzahl der Einträge, diese Anzahl würde ich gerne im ersten DataGridView als weitere Spalte anzeigen, so dass zu jeder Gruppe gleich die Anzahl der Einträge ersichtlich ist. Leider sind zum einen die Daten für Gruppe und Artikel in zwei unterschiedlichen DataTables, zum Anderen bräuchte ich sowas wie einen count() auf die zweite DataTable.
Hat jemand eine Idee, ob und wie das mit einer DataView zu realisieren ist?
Danke,
Stefan | |
Re: DataView über 2 DataTables? | | | Autor: ProXy | Datum: 16.09.08 12:00 |
| Danke für den Hinweis. Eine Relation zwischen den beiden DataTables habe ich. Ich habe mal nach "Computed Column" gesucht, schlauer bin ich deswegen leider noch nicht. Ist diese Column ungebunden? | |
Re: DataView über 2 DataTables? | | | Autor: ProXy | Datum: 16.09.08 13:43 |
| Habe inzwischen eine Lösung gefunden, siehe ganz unten!
Ich habe nun versucht, eine berechte Spalte in meine DataTable hinzuzufügen, so wie es dein Beispiel aufzeigt bzw. wie es bei MSDN (http://msdn.microsoft.com/de-de/library/bb979485.aspx) steht.
Ich erhalte allerdings folgende Exception: Ungebundener Verweis im Aggregatausdruck 'System.Data.AggregateNode'.
Eventuell ist die Reihenfolge meiner DataTables falsch..hier mal ein Auszug aus dem Code:
gdsSet = New DataSet
gdsSet.Tables.Add(generateTable()) 'Kinder-Tabelle
gdsSet.Tables.Add(generateGruppen()) 'VaterTabelle
drRelation = New DataRelation("relGruppen", gdsSet.Tables( _
"dtGruppen").Columns("Artikel"), gdsSet.Tables("dtData").Columns( _
"Artikel"), True)
gdsSet.Relations.Add(drRelation) Und hier werden die DataTables erstellt:
Private Function generateGruppen() As DataTable
Dim dtTemp As DataTable
dtTemp = New DataTable
dtTemp.Columns.Add("Artikel", GetType(String))
dtTemp.Columns.Add("Anzahl", GetType(Integer), "COUNT(Child(" & _
"dtData).Artikel)")
dtTemp.TableName = "dtGruppen"
Return dtTemp
End Function
Private Function generateTable() As DataTable
Dim dtTemp As DataTable
dtTemp = sqlDataTable("SELECT Artikel.AR_Nummer," & _
"Artikelgruppe.AGR_Bezeichnung, Artikel.AR_Bezeichnung FROM Artikel" & _
"LEFT JOIN Artikelgruppe ON Artikelgruppe.AGR_Nummer =" & _
"Artikel.FK_AGR_Nummer")
dtTemp.Columns.Add("Artikel", GetType(String))
dtTemp.TableName = "dtData"
Return dtTemp
End Function Die Spalte Artikel ist in beiden Tabellen vorhanden und bildet den Contraint. Zur Laufzeit erstelle ich Einträge in die Vatertabelle und update die Kindertabelle.
Hast du eine Idee, was ich falsch mache?
Nachtrag: Wenn ich die Expression setze, nachdem die Relation drauf ist, funktioniert alles wie gewollt. Danke für die Mühe!
Beitrag wurde zuletzt am 16.09.08 um 14:09:39 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|