this is my code for loading the data in my database going to my datagrid
Private Sub Records_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim connString As String = "Provider=Microsoft.Ace.Oledb.12.0; Data Source=" & My.Application.Info.DirectoryPath.ToString() & "\BackUp\Database3.Accdb;"
Dim MyConn As OleDbConnection
Dim da As OleDbDataAdapter
Dim ds As DataSet
Dim tables As DataTableCollection
Dim source1 As New BindingSource
MyConn = New OleDbConnection
MyConn.ConnectionString = connString
ds = New DataSet
tables = ds.Tables
da = New OleDbDataAdapter("Select * from [userinfo] ORDER BY ID", MyConn) 'Change items to your database name
da.Fill(ds, "userinfo") 'Change items to your database name
Dim cb = New OleDbCommandBuilder(da)
Dim view As New DataView(tables(0))
source1.DataSource = view
DataGridView1.DataSource = view
End Sub
and this is my delete button to delete a selected row in datagrid but the whole table is deleted instead (i know this cause i put it to delete the whole table just to know my sql is working)
Private Sub cmdDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDelete.Click
Dim connString As String = "Provider=Microsoft.Ace.Oledb.12.0; Data Source=" & My.Application.Info.DirectoryPath.ToString() & "\BackUp\Database3.Accdb;"
Dim MyConn As OleDbConnection
Dim da As OleDbDataAdapter
Dim ds As DataSet
Dim tables As DataTableCollection
Dim source1 As New BindingSource
Dim row As New Integer
Try
MyConn = New OleDbConnection
MyConn.ConnectionString = connString
ds = New DataSet
tables = (ds.Tables)
da = New OleDbDataAdapter("Delete * from [userinfo]", MyConn)
da.Fill(ds, "userinfo")
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
i want to delete a selected row in my datagrid. thank you in advance
Delete * from [userinfo]
will delete everything in the table. Pass your ID to be deleted. Eg. Delete * from [userinfo] where ID=5
You can use Datagridview.SelectedRows Property to find the selected Rows. Pass the ID Column index and you will get the ID.
Eg. "Delete * from [userinfo] where ID=" & DataGridView1.SelectedRows(0).Cells(0).Value.ToString()
If you Allow Multi-Select, Loop through the rows to delete. Also use parameters to pass variables to queries for security purposes.
Sorry my bad English. Step 1: Listen to click on a Datagrid
Private Sub datagridview_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles datagridview.CellClick
Step 2: Get what column click
datagridview.Rows.Item(e.RowIndex).Cells(0).Value
Step 3: Delete from Database
Dim sqlcmd As String = "delete from [userinfo] where YourColumn = '" & datagridview.Rows.Item(e.RowIndex).Cells(0).Value & "'"
Fully code:
Private Sub Datagridview_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView.CellClick
Try
Dim MyConn As OleDbConnection
Dim connString As String = "Provider=Microsoft.Ace.Oledb.12.0; Data Source=" & My.Application.Info.DirectoryPath.ToString() & "\BackUp\Database3.Accdb;"
MyConn = New OleDbConnection
Dim cmdstr As String = "delete * from [userinfo] where YourColumn = '" & DataGridView.Rows.Item(e.RowIndex).Cells(0).Value & "'"
Dim cmd As New OleDbCommand(cmdstr, MyConn)
MyConn.Open()
cmd.ExecuteNonQuery()
MyConn.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
The way to refer to deleted row values is row original value from deleted rows table:
dt is datasource of datagridview
Dim dtDelete As DataTable = dt.GetChanges(DataRowState.Deleted)
cmd.Parameters.AddWithValue("@GridValue", r("Gridcolumn", DataRowVersion.Original))
the example is SQL but method is not specific
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.