Programmieren - alles kontrollieren 4.935 Themen, 20.616 Beiträge

VB.net 2010: Daten aus DataSet zurück in DB schreiben

Neo3000 / 6 Antworten / Flachansicht Nickles

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

bei Antwort benachrichtigen
Borlander Neo3000 „VB.net 2010: Daten aus DataSet zurück in DB schreiben“
Optionen
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??
 Wie würde denn überhaupt Deine Strategie aussehen, wenn mehrere Zeilen geändert wurden? Spätestens wenn z.B. ein Kunde in mehreren Zeilen auftaucht, dann kracht das. Ganz böse wird es wenn dann noch an beiden Zeilen konkurrierende Änderungen  vorgenommen werden...
bei Antwort benachrichtigen