Datensätze löschen

royalboy

Mitglied
Hallo Zusammen

Ich möchte einen Datensatz löschen, aber bringe es irgendwie nicht hin. Schaut doch mal diesen Code an:

Danke


Private Sub deleteitems()
Dim delSQL As String = "DELETE FROM Kunden WHERE KundeID = @p1"
Dim cmd As New SqlCommand(delSQL, Conn)
Dim p1 As SqlParameter = cmd.Parameters.Add("@p1", SqlDbType.BigInt, 4, "KundenID")
p1.SourceVersion = DataRowVersion.Original
da.DeleteCommand = cmd
Dim dr As DataRow
For Each dr In dt.Rows
If dr.Item("KundeID") Is Me.lblKundenNr.Text Then dr.Delete()
Next
Try
da.Update(dt)
Catch ex As Exception

End Try
End Sub
:(
 
Gib uns doch mal etwas mehr Informationen darüber, was "bringe es irgendwie nicht hin" genau heißt. Gibt es eine Fehlermeldung, wenn ja welche? Welches Datenbanksystem benutzt du?
 
Hallo

Ich verwende SQL Sever 2000

Ich habe ein Grid mit ein paar buttons, wie edit, delete. Wenn man auf delete Button drückt, möchte ich eben ausgewählte Zeile löschen .

Wenn ich es debugge, erhalte ich keine Fehlermeldung.
PHP:
 Private Sub grdResultData_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles grdResultdata.ItemCommand
        
        Dim btn As LinkButton = CType(e.CommandSource, LinkButton)

        If btn.Text = "Edit" Then

            Me.lblKundenNr.Text = e.Item.Cells(0).Text
            Me.txtKundenName.Text = e.Item.Cells(1).Text
            Me.txtBemerkung.Text = e.Item.Cells(2).Text
            Me.btnupdate.Visible = True
            Me.btnabbrechen.Visible = True
            Me.btnSpeichern.Visible = False

        Else
            Me.lblKundenNr.Text = e.Item.Cells(0).Text
            deleteitems()
            bindgrddata()

        End If

    End Sub

 Private Sub deleteitems()
        Dim delSQL As String = "DELETE FROM Kunden WHERE KundeID = @p1"
        Dim cmd As New SqlCommand(delSQL, Conn)
        Dim p1 As SqlParameter = cmd.Parameters.Add("@p1", SqlDbType.BigInt, 4, "KundenID")
        p1.SourceVersion = DataRowVersion.Original
        da.DeleteCommand = cmd
        Dim dr As DataRow
        For Each dr In dt.Rows
            If dr.Item("KundeID") Is Me.lblKundenNr.Text Then dr.Delete()
        Next
        Try
            da.Update(dt)
        Catch ex As Exception

        End Try
    End Sub

Danke
 
Zuletzt bearbeitet:
Was machst du da eigentlich ?
Du hast doch die zu löschende Kundennummer und damit eine eindeutige identifikation der zu löschenden Zeile - richtig ?
Da bringt es dir doch nichts, wenn du noch alle DataRows durchiterierst und abfragst, ob dr.Item("KundeID") von der gleichen Instanz ist, wie Me.lblKundenNr.Text ["Is" ist doch bei VB und C# gleichbedeutend, nicht ==, oder ?]

Warum schreibst du nicht in deine Variable delSQL einfach
PHP:
"DELETE FROM Kunden WHERE KundeID = "&Me.lblKundenNr.Text
und lässt dies auf den DataAdapter ausführen ?
 
So habe ich es gelöst:


PHP:
  Private Sub Erfassung_delete(ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)
        Dim cnnSqlConn As New SqlConnection(Session(gcSessVarConnString).ToString)

        Dim cmddelete As New SqlCommand(gcgetDel_kundenverwaltung, cnnSqlConn)
        cmddelete.CommandType = CommandType.StoredProcedure

        With cmddelete.Parameters
            .Add("@KundeID", SqlDbType.Int, 4, "KundeID").Value = Me.grdResultdata.DataKeys(e.Item.ItemIndex)
        End With

        cmddelete.Connection.Open()
        cmddelete.ExecuteNonQuery()

        BindgrdData()

    End Sub
 
Zurück