informatikerin86 Geschrieben 23. April 2009 Geschrieben 23. April 2009 Hallo Leute, für alle die nur darauf warten das ich eine neue Frage stelle (), hier meine "Freitags-Frage": Ich möchte eine Zeile im DataSet ändern, hier der Code (der funktioniert) um eine Zeile zu ändern die aufgrund eines ListBox-Eintrags geändert wird: Dim dblPos As Double dblPos = Me.BindingContext(Me.DataView1).Position With DataSet21.Tables("Prozessdaten 2641").Rows(dblPos) .Item("freig PCD") = "x" .Item("status") = "1" End With OleDbDataAdapter1.Update(DataSet21, "Prozessdaten 2641") Theoretisch müsste es ja einfacher sein das DataSet ohne ListBox-Eintrag zu ändern, einfach in dem ich den PKey der Tabelle angebe und diese Zeile dann wie ich es möchte verändert wird. Nur wie kann ich das dann angeben?? Danke im voraus. Viele Grüße Informatikerin Zitieren
TDM Geschrieben 24. April 2009 Geschrieben 24. April 2009 DbDataAdapter.UpdateCommand via SQL-Statement neu schreiben. Und dann einfach die Update()-Methode aufrufen. Zitieren
informatikerin86 Geschrieben 27. April 2009 Autor Geschrieben 27. April 2009 Hallo Leute, ich hab das schon mal mit der OleDbCOmmand versucht, es hat bei mir leider nicht funktioniert. Das ist mein Code: Me.OleDbDataAdapter1.Fill(DataSet31) Dim cmd As OleDb.OleDbCommand Dim cmdtest As OleDb.OleDbCommandBuilder Dim parm As OleDb.OleDbParameter cmd = New OleDb.OleDbCommand("UPDATE Prozessdaten 2641 SET status = 3" & _ "WHERE SAP-Nr = 4444", Me.OleDbConnection1) 'cmd.Parameters.Add("@CompanyName", OleDb.OleDbType.VarChar, 8, "CompanyName") 'parm = cmd.Parameters.Add("@oldCustomerID", OleDb.OleDbType.VarChar.Char, 8, "CustomerID") 'gefunden bei Msdn Me.OleDbDataAdapter1.UpdateCommand = cmd OleDbDataAdapter1.Update(DataSet31, "Prozessdaten 2641") MsgBox("Das PDB mit der SAP-Nr: " & strSuchText & " wurde archiviert", MsgBoxStyle.Information, "Information") Weiß vielleicht jemand wo mein Fehler liegt? Die Anwendung sagt gar nichts, es passiert einfach nur nichts in der DB. Danke im voraus Viele Grüße informatikerin Zitieren
informatikerin86 Geschrieben 27. April 2009 Autor Geschrieben 27. April 2009 cmd = New OleDb.OleDbCommand("UPDATE Prozessdaten 2641 SET status= @statusOrg WHERE SAP-NR = " & strSuchText, Me.OleDbConnection1) cmd.Parameters.Add("@status", OleDb.OleDbType.Integer, 8, "3") parm = cmd.Parameters.Add("@statusOrg", OleDb.OleDbType.Integer, 8, "status") klappt aber immer noch nicht Zitieren
TDM Geschrieben 27. April 2009 Geschrieben 27. April 2009 Weiß vielleicht jemand wo mein Fehler liegt? Die Anwendung sagt gar nichts, es passiert einfach nur nichts in der DB. Das DataSet wird aber geändert? Evtl. ist der DataAdapter geschlossen (wobei, dann sollte eigentlich eine Exception kommen). Zitieren
informatikerin86 Geschrieben 27. April 2009 Autor Geschrieben 27. April 2009 Hallo, ich hab jetzt nen kompletten "Work-around" gefunden, kein Eingabefeld das erst mit der DB "verknüpft" werden muss sondern eine ComboBox die als Source mein DataView hat. Nun kann ich wieder den Code aus meinem ersten Post benutzen. Eigentlich ist das auch die bessere Lösung, da ich dann nicht zig if-abfragen machen muss und vorgegebene (richtige) werte einfacher sind wenn man sie auswählen kann. Trotzdem vielen Dank TDM für deine Hilfe! Lg Simone Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.