Привет, ребята, мне нужна помощь в обновлении данных на моем datagridview. Сценарий - это когда я нажимаю кнопку «Поиск», он будет запрашивать соответствующие данные и отображать, что я хочу в datagridview. Затем я хочу обновить, если их изменения или удаленные данные из datagridview затем также будут обновляться в моей таблице mysql для новых данных или записей всякий раз, когда я нажимаю кнопку «Обновить». Проблема в том, что когда я нажимаю кнопку поиска, появляется сообщение «Таблица не содержит изменений для сохранения». это означает, что изменений нет, но я уже изменяю значения в datagridview. Кто-нибудь может мне помочь? Вот мой поиск кода кнопки:Обновление таблицы mysql в vb.net с использованием datagridview
Public Class Form1
Dim con As New MySqlConnection
Dim result As Integer
Dim cmd As New MySqlCommand
Dim da As New MySqlDataAdapter
Dim ds As New DataSet
Dim dr As MySqlDataReader
Dim sql As String
Dim dt As New DataTable
Private Sub cmdSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSearch.Click
Dim conn As New MySqlConnection
conn.ConnectionString = ("server=127.0.0.1;user id=root;password=12345;database=dbsis3bkenth;")
Try
conn.Open()
sql = "SELECT LName,FName,MI FROM tblsisterbrother where IDNoBrodSis = '" & cbIDNo.Text & "'"
cmd = New MySqlCommand(sql, conn)
dr = cmd.ExecuteReader
dr.Read()
If dr.HasRows = True Then
MessageBox.Show("Record Found.!")
Else
MessageBox.Show("Record Unfound.!")
End If
dr.Close()
Catch ex As MySqlException
MessageBox.Show("Error in searching to database:error is:" & ex.Message)
Exit Sub
End Try
dr.Close()
RemoveHandler DataGridView1.CellValidating, AddressOf DataGridView1_CellValidating
da.SelectCommand = cmd
da.Fill(ds, "tblsisterbrother")
DataGridView1.DataSource = ds.Tables(0)
conn.Dispose()
conn.Close()
End Sub
Вот код моей кнопки обновления:
Private Sub cmdUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdUpdate.Click
DataGridView1.EndEdit()
Dim dt As DataTable
dt = TryCast(DataGridView1.DataSource, DataTable)
If dt.GetChanges() Is Nothing Then
MessageBox.Show("The table contains no changes to save.")
Else
Dim builder = New MySqlCommandBuilder(da)
Dim rowsAffected As Integer = da.Update(dt)
If rowsAffected = 0 Then
MessageBox.Show("No rows were affected by the save operation.")
Else
MessageBox.Show(rowsAffected & " rows were affected by the save operation.")
End If
End If
End Sub
End Class
Пожалуйста, помогите мне, ребята, чтобы решить мою проблему :)
Как не запутаться все эти дополнительные глобальные переменные объекта? У вас есть DataTable, объявленный для формы, тогда каждая процедура объявляет и создает новые каждый раз. ** Используйте ** уровень модуля один, и вам не придется бросать DS, чтобы добраться до стола. – Plutonix