none
Update Methode funktioniert nicht RRS feed

  • 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.

    Mittwoch, 30. Dezember 2015 16:59

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
    Mittwoch, 30. Dezember 2015 17:48
    Moderator

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
    Mittwoch, 30. Dezember 2015 17:48
    Moderator
  • 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

    Mittwoch, 30. Dezember 2015 18:53
  • 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


    Mittwoch, 30. Dezember 2015 19:33
    Moderator