Benutzer mit den meisten Antworten
Update Methode funktioniert nicht

Frage
-
Hallo An Alle im Forum, guten Abend.
Ich habe versucht einen Code von Elmar von Select auf Update umzuschreiben, und bin kläglich gescheitert.
Ich habe folgenden Code (funktioniert nicht).
Private Sub cmd_Entfernen_Click(sender As Object, e As System.EventArgs) Handles cmd_Entfernen.Click On Error GoTo Fehler Dim table As New DataTable() Dim der_TP As Integer 'Dim der_Index As Integer Dim der_Status As String 'der_Index = Me.lsv_Auswahl.FocusedItem.Index der_TP = 2' Me.lsv_Auswahl.Items(der_Index).SubItems(2).Text der_Status = "verkauft" Using connection As New SqlCeConnection(CnSt) Using adapter As New SqlCeDataAdapter( "UPDATE Fahrzeugdaten_Roh" & _ "SET Status = @der_Status" & _ "WHERE (TP = @der_TP) ;", connection) adapter.UpdateCommand.Parameters.AddWithValue("@der_Status", der_Status) adapter.UpdateCommand.Parameters.AddWithValue("@derTP", der_TP) adapter.Update(table) End Using End Using Exit Sub '******************************************************************************************************** Fehler: MsgBox("Fehlernummer: " & Err.Number & _ vbCrLf & "Fehlerbeschreibung: " & Err.Description) End Sub
Die Fehlermeldung ist "Fehler 91 Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Wenn ihr die Tabelle nachstellen wollt eine Spalte heißt TP und die andere Status. Wenn der Wert in TP 2 ist (ist der Primärschlüssel, dann soll im Feld "Status", verkauft stehen.
Ich hoffe, jemand kann mir helfen.
Mit freundlichen Grüßen Piti
PS: habe einen Thread im Forum gefunden, der bezog sich aber auf SQLServer 2005.
Antworten
-
Hi,
wenn Du nur ein UPDATE absetzen willst, nimm ein SqlCommand bzw. in deinem Fall ein SqlCeCommand.
Using connection As New SqlCeConnection(CnSt) Using cmd As New SqlCeCommand( "UPDATE Fahrzeugdaten_Roh SET Status = @der_Status WHERE TP = @der_TP", connection ) cmd.Parameters.AddWithValue( "@der_Status", der_Status ) cmd.Parameters.AddWithValue( "@der_TP", der_TP ) cmd.ExecuteNonQuery() End Using End Using
Siehe dazu auch:
https://msdn.microsoft.com/de-de/library/system.data.sqlserverce.sqlcecommand.aspx
P.S.: Ein paar Fehler (falsch geschriebener Parametername und fehlendes Leerzeichen im SQL Statement zwischen "..._Roh" und "SET..." habe ich im Code auch behoben)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Der_Lernende Mittwoch, 30. Dezember 2015 18:53
Alle Antworten
-
Hi,
wenn Du nur ein UPDATE absetzen willst, nimm ein SqlCommand bzw. in deinem Fall ein SqlCeCommand.
Using connection As New SqlCeConnection(CnSt) Using cmd As New SqlCeCommand( "UPDATE Fahrzeugdaten_Roh SET Status = @der_Status WHERE TP = @der_TP", connection ) cmd.Parameters.AddWithValue( "@der_Status", der_Status ) cmd.Parameters.AddWithValue( "@der_TP", der_TP ) cmd.ExecuteNonQuery() End Using End Using
Siehe dazu auch:
https://msdn.microsoft.com/de-de/library/system.data.sqlserverce.sqlcecommand.aspx
P.S.: Ein paar Fehler (falsch geschriebener Parametername und fehlendes Leerzeichen im SQL Statement zwischen "..._Roh" und "SET..." habe ich im Code auch behoben)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Der_Lernende Mittwoch, 30. Dezember 2015 18:53
-
Hallo Stefan,
Danke für deine Antwort. Ich habe den Code noch um "connection.Open()" erweitert und natürlich "connection.Close"
dann hat es funktioniert. Wußte nicht, dass das es beim SQL String auf jedes Leerzeichen ankommt. Wieder was gelernt.
Ich wünsche Dir noch einen schönen Abend und wünsche Dir einen guten Rutsch ins neue Jahr.
Viele Grüße Piti
-
Hallo Piti,
auf jedes Leerzeichen nicht aber dein SQL Statement hätte dann so ausgesehen:
UPDATE Fahrzeugdaten_RohSET Status = @der_StatusWHERE TP = @der_TP
Es hätte also die Tabelle "Fahrzeugdaten_RohSET" aktualisiert werden sollen, zudem hätte das SET Schlüsselwort im Statement gefehlt. Dazu wäre der erste Parameter mit "@der_StatusWHERE" bezeichnet worden, was auch falsch gewesen wäre.
Dir und allen anderen hier auch einen guten Rutsch ins neue Jahr. Rutscht nicht zu weit, soll ja stellenweise morgen Abend recht glatt werden.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan FalzModerator Mittwoch, 30. Dezember 2015 19:34