2016-05-30 2 views
0

У меня есть кнопка удаления, которая готова после выбора строки из 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 

Я сделал несколько тестов. Он делает это после того, как я нажимаю на строку и нажимаю кнопку удаления, она обновляется, но не удаляется в datagridview и базе данных. Если я попробую снова тот же процесс, он будет удален. Я не знаю, почему это происходит

ответ

0

Изменить код:

cmdDelete = "DELETE from infofile WHERE [email protected]" 

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

Что такое nbre? – user6363145

+0

«nbre» - количество строк, на которые влияет запрос, который вы можете использовать только cmd.ExecuteNonQuery(), если вы хотите –

+0

Что я должен поставить вместо @ForDelete? – user6363145

0

Когда вы даете команду SQL в DataAdapter, это выбрать команду (см SqlDataAdapter Constructor (String, 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 
+0

Это работает, как работает мой код. Проблема здесь в том, что если я добавлю файл и хочу удалить, он не работает в первый раз. Но если я попробую во второй раз, это работает -.- – user6363145

+0

Я думаю, что проблема здесь стоит на файлах, которые я добавляю. Потому что, если я что-то добавляю, а затем перезагружаю приложение и пытаюсь его удалить, он фактически удаляется с первой попытки. – user6363145

+0

Является ли 'DataGridView2' привязанным к базе данных каким-либо образом? Например. установив свой '.DataSource' или аналогичный. –