SQL Abfage und gleiche zusammen führen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Animal2k.

    SQL Abfage und gleiche zusammen führen

    Hallo zusammen
    ich brauch mal wieder eure Hilfe für eine Abfrage in meinem OleDbDataAdapter

    ich frage aus einer Datenbank die Lagereinheiten ab

    Bild von der Datenbank ist im Anhang

    Mit folgendem Befehl hol ich mir die Daten in eine Datagridview

    VB.NET-Quellcode

    1. da = New OleDbDataAdapter("Select ID, Name, Nachname, Kundenummer
    2. Switch(Lagereinheit = 'Lager A', 1) as Lager A,
    3. Switch(Lagereinheit = ''Lager B', 1) as Lager B,
    4. Switch(Lagereinheit = ''Lager C, 1) as Lager C from Vision ", MyConn)


    Das Bild im Anhang mit dem Namen Tabelle ist was durch diesen Befehl in der DGV steht

    Meine Frage wäre jetzt:
    Ist es Möglich wenn ein Kunde ein Teil aus Lager A und Lager C hat, dies auch in der Datagridview darzustellen, Ergo diese beiden Einträge zu kommbinieren ?

    Damit es dann wie folgt aussehen würe
    ID
    Name
    Nachname
    Kundennummer
    Lager A
    Lager B
    Lager C
    1
    Bernd
    Huber
    332
    1

    1
    2
    Sarah
    Klein
    345
    1





    Bilder
    • Datenbank.PNG

      9,16 kB, 626×158, 134 mal angesehen
    • Tabelle.PNG

      8,6 kB, 639×159, 136 mal angesehen
    mir ist nicht klar was du zahlen/darstellen willst, aber viellecht kannst du hiermit etwas anfangen

    die Datenstruktur mit 3 Tabellen sieht so aus



    die Abfrage dieser Tabellen sieht so dann aus

    VB.NET-Quellcode

    1. Imports System.Data.OleDb
    2. Public Class Pivot3
    3. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    4. Dim FrozenColumsCount As Integer = 3
    5. Dim Ssql As String = "TRANSFORM Count(tbl_Zwischentabelle.LagerID) AS AnzahlvonLagerID"
    6. Ssql &= " SELECT tbl_Kunde.Name, tbl_Kunde.Nachname, tbl_Kunde.Kundennummer"
    7. Ssql &= " FROM tbl_Kunde INNER JOIN (tbl_Lager INNER JOIN tbl_Zwischentabelle ON"
    8. Ssql &= " tbl_Lager.LagerID = tbl_Zwischentabelle.LagerID) ON"
    9. Ssql &= " tbl_Kunde.ID = tbl_Zwischentabelle.ID"
    10. Ssql &= " GROUP BY tbl_Kunde.Name, tbl_Kunde.Nachname, tbl_Kunde.Kundennummer"
    11. Ssql &= " PIVOT (tbl_Lager.Lagerbezeichnung);"
    12. Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.oledb.12.0;Data Source=D:\Db2010.accdb")
    13. Dim cmd As OleDbCommand = New OleDbCommand(Ssql, con)
    14. con.Open()
    15. Dim myDA As OleDbDataAdapter = New OleDbDataAdapter(cmd)
    16. Dim myDataSet As DataSet = New DataSet()
    17. myDA.Fill(myDataSet, "MyTable")
    18. DataGridView1.DataSource = myDataSet.Tables("MyTable").DefaultView
    19. DataGridView1.AllowUserToAddRows = False
    20. con.Close()
    21. con = Nothing
    22. 'Freeze first 4 columns
    23. For i As Integer = 0 To FrozenColumsCount - 1
    24. DataGridView1.Columns(i).Frozen = True
    25. Next
    26. End Sub
    27. End Class




    gruss
    kasi