Hallo zusammen,
habe eine alte Access Abfrage
und möchte diese jetzt in VB.Net 2017 in Linq umsetzen, damit dies in einem DataGridView angezeigt wird.
Habe dazu ein Modul Abfrage in der dann alle Abfragen drin stehen. (Erhoffe mir dadurch ein leichteren Überblick und evtl. Pflege)
Was ich bisher verstanden habe
DT1-DT3 sind die einzelnen Tabellen und somit der Zugriff auf dessen Felder
Join fügt weitere Tabellen hinzu
on .. Equals verbindet zwei Tabellen und deren Felder miteinander
Where ist die Bedindung(en), die erfüllt sein müssen für die Filterung
Order By ist die Sortierung der einzelnen Tabellenfelder
Select ist dann die Anzeigereihenfolge der gewünschten Tabellenfelder der jeweiligen Tabelle.
Was ich aber leider jetzt noch gar nicht verstehe ist das Gruppieren (somit das reduzieren auf einmalige Datensätze). Aktuell sind es weit über 44.000. Es sollten aber nur knapp 60 sein.
Das Anzeigen des Ergebnisses im DGV klappt schon.
Könntet Ihr mir kurz auf die Sprünge helfen.
An welcher Stelle kommt die Group Anweisung hin und wie müsste ich die dann aufbauen?
Vielen Dank
Volker
P.S. Das Ganze ist für eine Suchfunktion gedacht, in der der Benutzer je nach Eingabemaske sich ein Feld aussuchen kann, in dem dann anschließend gesucht wird. Da die Felder für jede Eingabemaske andere sind, muss das Ganze über Tabelleneinträge geregelt werden. Der Benutzer soll später auch noch eigene Felder hinzufügen können.
habe eine alte Access Abfrage
SQL-Abfrage
- SELECT Artikel_variable_Datentabelle_Felder.Bezeichnung, Artikel_variable_Datentabelle_Felder.EingabemaskeID, Artikel_variable_Datentabelle_Root_0_Bereiche.TreeViewHauptpunkte, Artikel_variable_Datentabelle_Root_0_Bereiche.Anzeigereihenfolge, Artikel_variable_Datentabelle_Felder.Anzeigereihenfolge
- FROM (Artikel_variable_Datentabelle_Root_1_Bereiche LEFT JOIN Artikel_variable_Datentabelle_Felder ON Artikel_variable_Datentabelle_Root_1_Bereiche.FeldnameID = Artikel_variable_Datentabelle_Felder.ID) LEFT JOIN Artikel_variable_Datentabelle_Root_0_Bereiche ON Artikel_variable_Datentabelle_Felder.TreeViewRoot0ID = Artikel_variable_Datentabelle_Root_0_Bereiche.ID
- GROUP BY Artikel_variable_Datentabelle_Felder.Bezeichnung, Artikel_variable_Datentabelle_Felder.EingabemaskeID, Artikel_variable_Datentabelle_Root_0_Bereiche.TreeViewHauptpunkte, Artikel_variable_Datentabelle_Root_0_Bereiche.Anzeigereihenfolge, Artikel_variable_Datentabelle_Felder.Anzeigereihenfolge
- HAVING (((Artikel_variable_Datentabelle_Felder.EingabemaskeID)=1))
- ORDER BY Artikel_variable_Datentabelle_Root_0_Bereiche.Anzeigereihenfolge, Artikel_variable_Datentabelle_Felder.Anzeigereihenfolge;
und möchte diese jetzt in VB.Net 2017 in Linq umsetzen, damit dies in einem DataGridView angezeigt wird.
Habe dazu ein Modul Abfrage in der dann alle Abfragen drin stehen. (Erhoffe mir dadurch ein leichteren Überblick und evtl. Pflege)
VB.NET-Quellcode
- Public Function TreeView_Suche1(EingabemaskeID_Filter As Integer, DGridView As DataGridView) As String
- ' In Access alte Daten-DB: Abfrage 2
- Dim LINQ_String = From DT1 In Hauptmaske._Modelldatenbank_VB_Net_2019_DatenDataSet.Artikel_variable_Datentabelle_Root_1_Bereiche
- Join DT2 In Hauptmaske._Modelldatenbank_VB_Net_2019_DatenDataSet.Artikel_variable_Datentabelle_Felder
- On DT1.FeldnameID Equals DT2.ID
- Join DT3 In Hauptmaske._Modelldatenbank_VB_Net_2019_DatenDataSet.Artikel_variable_Datentabelle_Root_0_Bereiche
- On DT2.TreeViewRoot0ID Equals DT3.ID
- Where DT2.EingabemaskeID = EingabemaskeID_Filter
- Order By DT3.Anzeigereihenfolge Ascending, DT2.Anzeigereihenfolge Ascending
- Select DT2.Bezeichnung, DT2.EingabemaskeID, DT3.TreeViewHauptpunkte, DT3.Anzeigereihenfolge, Anzeigereihenfolge2 = DT2.Anzeigereihenfolge
- 'Group By DT2.Bezeichnung, DT2.EingabemaskeID, DT3.TreeViewHauptpunkte, DT3.Anzeigereihenfolge, Anzeigereihenfolge2 = DT2.Anzeigereihenfolge
- DGridView.DataSource = LINQ_String.ToList
- End Function
Was ich bisher verstanden habe
DT1-DT3 sind die einzelnen Tabellen und somit der Zugriff auf dessen Felder
Join fügt weitere Tabellen hinzu
on .. Equals verbindet zwei Tabellen und deren Felder miteinander
Where ist die Bedindung(en), die erfüllt sein müssen für die Filterung
Order By ist die Sortierung der einzelnen Tabellenfelder
Select ist dann die Anzeigereihenfolge der gewünschten Tabellenfelder der jeweiligen Tabelle.
Was ich aber leider jetzt noch gar nicht verstehe ist das Gruppieren (somit das reduzieren auf einmalige Datensätze). Aktuell sind es weit über 44.000. Es sollten aber nur knapp 60 sein.
Das Anzeigen des Ergebnisses im DGV klappt schon.
Könntet Ihr mir kurz auf die Sprünge helfen.
An welcher Stelle kommt die Group Anweisung hin und wie müsste ich die dann aufbauen?
Vielen Dank
Volker
P.S. Das Ganze ist für eine Suchfunktion gedacht, in der der Benutzer je nach Eingabemaske sich ein Feld aussuchen kann, in dem dann anschließend gesucht wird. Da die Felder für jede Eingabemaske andere sind, muss das Ganze über Tabelleneinträge geregelt werden. Der Benutzer soll später auch noch eigene Felder hinzufügen können.