DataAdapter/-Update

Alfred_

Erfahrenes Mitglied
Hi,
Ich bekomme die Fehlermeldung: Für mindestens einen erforderlichen Parameter wurde kein Wert angegeben, was zwar in den Foren ziemlich häufig beschrieben aber deren Lösungsvorschläge für mich nicht in Frage kommen. Also z.B. Feldnamen falsch, Index nicht vorhanden etc.
Ich will lediglich dem Spalteninhalt lID neue Wertigkeiten zuweisen.
Was funktioniert bei diesem Code nicht? Ich vermute, dass der UpdateCommand den Fehler auslöst, weil oft von einer WHERE-Klausel die Rede ist. Doch an was soll ich eine Bedingung knüpfen, wenn ich nur eine Spalte mit Werten fülle?
Code:
	Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" & _
	"Data Source= C:\xyz\...\...\...\Daten.accdb")

	Dim da As New OleDbDataAdapter("SELECT * FROM Tabelle1 ORDER BY [lHit] DESC, [H4] DESC, [Nr] ASC", conn)
	Dim ds As New DataSet()
	conn.Open()
	da.Fill(ds, "Tabelle1")
	conn.Close()

	Try
	  conn.Open()
	  Dim i As Single
	  i = 1
	  Dim dt As DataTable = ds.Tables("Tabelle1")
	  For Each cRow As DataRow In dt.Rows
		cRow!lID = i
		i = i + 1
	  Next

	  Dim cmd As New OleDbCommand("UPDATE Tabelle1 SET [lID] = i ", conn)
	  da.UpdateCommand = cmd
	  da.Update(ds, "Tabelle1")

	Catch ex As Exception
	  MessageBox.Show(ex.Message, "Fehler! Synchronisierung 'Tabelle1' fehlgeschlagen")
	End Try
	conn.Close()
Ich hoffe, jemand kann mir helfen, denn der Grauanteil in meinen Haaren wird schön langsam unübersehbar. :))
Grüße
 
Hallo Alfred

Blöde Frage, aber verwaltest du denn die IDs selber?
Falls deine Spalte IID jedoch ein Key mit AutoWert ist, wärs klar, wieso es nicht geht.

Grüsse, Tecla
 
Hi,
danke für Deinen Lösungsvorschlag.
Die Spalte lID hat den Datentyp Single, hingegen hat Nr den Autoincr.Wert.
Ich wußte bisher nur, dass UPDATE einen PrimaryKey benötigt. Nr benutze ich nur zu einer zusätzlichen Sortiergröße. Sonst nichts.
Aus den 'superschlauen und sündteuren' Kompendien angeführten 'Beispiele werden ich auch nicht schlau, wie z:B.:
Code:
...."UPDATE Kunden SET Firma = ? WHERE KundenConde =?",conn)
Wie soll ich das 'übersetzen, wenn ich lediglich EINEN(!) Spalteninhalt verändere?
Die Online-Hilfe ist diesbezüglich auch für den 'Hugo'.
Ich hoffe Du kannst mir helfen.
Grüße

Mein Problem war, dass ich es nicht über einen CommandBuilder und einem DataTable gelöst habe...
Mit einem DataSet arbeiten und über ein DataTable bearbeiten, das kann nicht funktionieren....
Danke für Deine Bereitschaft mir zu helfen.
Grüße
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück