簡體   English   中英

刪除按鈕上的錯誤

[英]Bug on delete button

我有一個刪除按鈕,准備從Datagridview選擇一行后,然后按一下該按鈕,它將從數據庫中刪除該列。 但是我剛剛意識到一個問題已經解決,我無法解決。 問題很簡單,當我按下按鈕后,它應該刪除並更新Datagridview而不刪除任何內容,但這沒有發生。 這是東西,這是刪除按鈕的代碼

Private Sub cmdDelete_Click(sender As Object, e As EventArgs) Handles cmdDelete.Click
        SQLCon = New SqlConnection
        SQLCon.ConnectionString = "...."
        rbPorData.Checked = False
        rbPorExtensão.Checked = False
        rbPorNome.Checked = False
        Try
            SQLCon.Open()
            If MsgBox("Tem a certeza que deseja eliminar " & apagarTextBox.Text & "?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
                For i As Integer = Me.DataGridView2.SelectedRows.Count - 1 To 0 Step -1
                    cmdDelete = "DELETE infofile WHERE Filename='" & Me.DataGridView2.SelectedRows(i).Cells(0).Value.ToString() & "'"
                    SQLDA = New SqlDataAdapter(cmdDelete, SQLCon)
                    SQLDataSet = New DataSet()
                    SQLDA.Fill(SQLDataSet)
                    Me.DataGridView2.Rows.Remove(Me.DataGridView2.SelectedRows(i))
                    MessageBox.Show("Ficheiro apagado com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Next
                SQLCon.Close()
                UpdateDeletedFiles()
                UpdateComboBoxDelete()
                MostrarResultadoTotal()
                ChangeLabelColor()
            End If
        Catch ex As Exception
            MessageBox.Show(ex.ToString())
        Finally
            SQLCon.Dispose()
        End Try
    End Sub 

我做了一些測試。 它的作用是在我單擊該行並按Delete按鈕后,它會刷新,但不會在datagridview和數據庫上刪除。 如果我再次嘗試相同的過程,它將被刪除。 我不知道為什么會這樣

將您的代碼更改為:

 cmdDelete = "DELETE from infofile WHERE Filename=@Filename"

 cmd = New SqlCommand(cmdDelete , SQLCon)
 cmd.Parameters.Add(New SqlParameter("@Filename", Me.DataGridView2.SelectedRows(i).Cells(0).Value.ToString() ))
 nbre = cmd.ExecuteNonQuery()

在數據適配器中提供SQL命令時,它就是select命令(請參見SqlDataAdapter構造函數(字符串,SqlConnection) )。 那也許不是您想要的。

您需要做的就是使用普通的SQL命令刪除文件名,如下所示:

If MsgBox("Tem a certeza que deseja eliminar " & apagarTextBox.Text & "?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then

    Try
        Using sqlConn As New SqlConnection("...")
            Dim sql = "DELETE FROM infofile WHERE Filename = @Filename"
            Using sqlCmd As New SqlCommand(sql, sqlConn)
                sqlCmd.Parameters.Add(New SqlParameter With {.ParameterName = "@Filename", .SqlDbType = SqlDbType.NVarChar})
                sqlConn.Open()

                For i As Integer = Me.DataGridView2.SelectedRows.Count - 1 To 0 Step -1
                    Dim fn = Me.DataGridView2.SelectedRows(i).Cells(0).Value.ToString()
                    sqlCmd.Parameters("@Filename").Value = fn
                    sqlCmd.ExecuteNonQuery()
                Next

                For i As Integer = Me.DataGridView2.SelectedRows.Count - 1 To 0 Step -1
                     Me.DataGridView2.Rows.Remove(Me.DataGridView2.SelectedRows(i))
                Next   

                sqlConn.Close()

            End Using

        End Using

        MessageBox.Show("Ficheiro apagado com sucesso!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information)

        UpdateDeletedFiles()
        UpdateComboBoxDelete()
        MostrarResultadoTotal()
        ChangeLabelColor()

    Catch ex As Exception
        MessageBox.Show(ex.ToString())
    End Try

End If

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM