Hallo an alle VB.netler,
        
        Ich steh vor einem Problem, dessen Lösung mich nicht ganz erreicht. Nicht mal ünber google, auch wenn ich Hinweise gefunden habe.
        
        Ich fülle ein DataGridView per Abfrage auf eine SQL Server 2008 DB. Diese Abfrage beinhaltet INNER JOINS auf mehrere Tabellen. Das funktioniert auch.
        Wenn ich nun aber Datensatzänderungen in die DB zurückschreiben will, beginnt bei mir der Horror.
        Ein dynamisches UpdateCommand des SqlAdapters kann wohl nicht für DataSources, die aus einer Abfrage auf mehrere Tabellen bestehen, ausgeführt werden. Leuchtet mir bis zu einem bestimmten Punkt ein.
        ABER: wie kann ich nun hier ein UPDATE ausführen, dass die, im DataGridView gemachten Änderungen an Datensätzen auch in die DB zurückgeschrieben werden??
        Ich weiß, evtl. schwer nachzuvollziehen, daher ein Beispiel:
        -----------------------------------------------------------------------------------------------------------------------------------------------------------------
        DBcon.myQueryStr = "SELECT Auftrag.ID, Auftrag.AuNr AS 'Auftrag', Auftrag.Datum, Kunde.Firma AS 'Auftraggeber', Auftrag.vPLZ AS 'von PLZ', Auftrag.vOrt AS 'von Ort', " & _
        "Auftrag.vLand AS 'von Land', Auftrag.nPLZ AS 'nach PLZ', Auftrag.nOrt AS 'nach Ort', Auftrag.nLand AS 'nach Land', Auftrag.Sendung, Auftrag.Gewicht, Einheit.Einheit, " & _
        "Auftrag.FRPreis AS 'Frachtpreis', Untern.Firma AS 'Frachtführer', Auftrag.TUPreis, Auftrag.Rechnung, Auftrag.Gewinn, Auftrag.Kennz AS 'Kennzeichen', " & _
        "Auftrag.DispoNr, Auftrag.ErfGef AS 'Erfasst & Gefaxt', Status.ID AS 'Status'" & _
        "FROM Auftrag"
        DBcon.sqlAdapter.SelectCommand = New SqlClient.SqlCommand(DBcon.myQueryStr, DBcon.con)
        
        'DBcon.sqlAdapter.SelectCommand = New SqlClient.SqlCommand(DBcon.myQueryStr, DBcon.con)
        DBcon.sqlAdapter.Fill(DBcon.sqlSet, "Auftrag")
        'DBcon.myTable = DBcon.sqlSet.Tables("Auftrag")
        'DBcon.mybinding.DataSource = DBcon.myTable
        'GlobVars.uf.Controls("dgvAUF").DataSource = DBcon.myTable
        
        If DBcon.sqlSet.Tables("Auftrag").Rows.Count = 0 Then
        NoDSFound("Transportaufträge")
        Exit Sub
        End If
        GlobVars.uf.Text = "Transportaufträge"
        GlobVars.uf.Show()
        GlobVars.uf.Controls("dgvAUF").DataSource = DBcon.sqlSet.Tables("Auftrag")
        GlobVars.uf.Controls("dgvAUF").DataSource = DBcon.mybinding
        
        GlobVars.uf.Controls("dgvAUF").Columns("ID").Visible = False
        GlobVars.uf.Controls("dgvAUF").Columns(DBcon.sqlSet.Tables("Auftrag").Columns.Count - 1).Visible = False
        GlobVars.uf.Controls("dgvAUF").AllowUserToAddRows = False
        GlobVars.uf.Controls("dgvAUF").ReadOnly = True
        SetStaColors("dgvAUF")
        GlobVars.uf.Controls("lbCOU").Text = GlobVars.uf.Controls("dgvAUF").RowCount
        -----------------------------------------------------------------------------------------------------------------------------------------------------------------
        Falls noch mehr info benötigt wird, einfach sagen.
        Vielen Dank schon mal für die Hilfe
        
        Grüße
        Kai
      
Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge
        
        Die Zeilen sind doch durch die ID eindeutig, oder?
Meinst Du die Auftrag.ID?
In gewisser Weise sind die Zeile schon eindeutig.
        
Ein Kunde kann auch in mehreren Zeilen stehen, [...] wo wäre denn der krachpunkt?
Genau dort!
        
Beispiel:
        
Auftrag.ID=1, ..., Kunde.ID=1, Name=Neo3000
Auftrag.ID=2, ..., Kunde.ID=2, Name=Borlander
Auftrag.ID=3, ..., Kunde.ID=1, Name=Neo3000
        
Jetzt wird in Auftrag.ID=3 der Kunde geändert:
        
Auftrag.ID=1, ..., Kunde.ID=1, Name=Neo3000
Auftrag.ID=2, ..., Kunde.ID=2, Name=Borlander
Auftrag.ID=3, ..., Kunde.ID=1, Name=Neo4000
         
Welcher Name ist nun der Richtige für Kunde 1?
        
Jetzt wird in Auftrag.ID=1 und 3 der Kunde geändert:
        
Auftrag.ID=1, ..., Kunde.ID=1, Name=Neo3001
Auftrag.ID=2, ..., Kunde.ID=2, Name=Borlander
Auftrag.ID=3, ..., Kunde.ID=1, Name=Neo4000
        
Welcher Name ist nun der Richtige für Kunde 1?
        
        
Problem klar?
        
        
Gruß
Borlander
      
      Meinst Du die Auftrag.ID?
In gewisser Weise sind die Zeile schon eindeutig.
Ein Kunde kann auch in mehreren Zeilen stehen, [...] wo wäre denn der krachpunkt?
Genau dort!
Beispiel:
Auftrag.ID=1, ..., Kunde.ID=1, Name=Neo3000
Auftrag.ID=2, ..., Kunde.ID=2, Name=Borlander
Auftrag.ID=3, ..., Kunde.ID=1, Name=Neo3000
Jetzt wird in Auftrag.ID=3 der Kunde geändert:
Auftrag.ID=1, ..., Kunde.ID=1, Name=Neo3000
Auftrag.ID=2, ..., Kunde.ID=2, Name=Borlander
Auftrag.ID=3, ..., Kunde.ID=1, Name=Neo4000
Welcher Name ist nun der Richtige für Kunde 1?
Jetzt wird in Auftrag.ID=1 und 3 der Kunde geändert:
Auftrag.ID=1, ..., Kunde.ID=1, Name=Neo3001
Auftrag.ID=2, ..., Kunde.ID=2, Name=Borlander
Auftrag.ID=3, ..., Kunde.ID=1, Name=Neo4000
Welcher Name ist nun der Richtige für Kunde 1?
Problem klar?
Gruß
Borlander
