2016-10-13 2 views
0

У меня есть DatagGridView, у которого есть DataSet из базы данных Access. У меня проблема при удалении, обновлении или вставке данных.DataGridView не обновляется после удаления, обновления или вставки

Это пример из моего метода обновления.

Private Sub btnactualizar_Click(sender As Object, e As EventArgs) Handles btnactualizar.Click 
    novacios() 
    Try 
     con = New OleDb.OleDbConnection(ruta) 
     con.Open() 
     Dim actualiza As String = "UPDATE Usuarios SET [email protected], correo = @a2, pass = @a3, activo = @a4 WHERE Correo = @a5" 
     sentencia = New OleDb.OleDbCommand(actualiza) 
     sentencia.Connection = con 
     sentencia.Parameters.AddWithValue("@a1", txtusuarios.Text) 
     sentencia.Parameters.AddWithValue("@a2", txtmail.Text) 
     sentencia.Parameters.AddWithValue("@a3", txtpass.Text) 
     sentencia.Parameters.AddWithValue("@a4", txtactivo.Text) 
     sentencia.Parameters.AddWithValue("@a5", txtusuarios.Text) 
     sentencia.ExecuteReader() 
     con.Close() 
     MessageBox.Show("Actualización realzada con éxito", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information) 
     Me.UsuariosTableAdapter.Fill(Me.Bd_proyectoNDataSet.Usuarios) 
     limpiatextos() 
    Catch ex As Exception 
     ex.Message.ToString() 
    End Try 
End Sub 

Как видно после сообщения, список должен быть обновлен методом заполнения. Но datagrid все тот же.

Вот несколько фотографий, чтобы понять, о чем я говорю. Буду признателен за любую помощь.

Перед обновлением данных Here's before update the data. See the datagrid

После обновления данных. Ничего не произошло And here's after I updated the data. Nothing happened

+0

'sentencia.ExecuteNonQuery()' – LarsTech

ответ

1

Вы делаете что-то в обратном направлении. Не вносите изменения в базу данных, а затем пытайтесь обновить сетку оттуда. Сначала вы обновляете локальные данные, а затем сохраняете это изменение в базе данных.

Ваша сетка привязана к BindingSource, и она привязана к DataTable в вашем типизированном DataSet. Вот где вы должны внести изменения. Возможно, вы должны привязать свой TextBoxes к тем же данным, и в этом случае изменения данных будут происходить автоматически. Если нет, то вы должны копировать данные из TextBoxes обратно в напечатанный файл DataRow, который вы редактируете. Эта сетка автоматически отражает это изменение. Затем вы вызываете Update на свой адаптер таблицы, чтобы сохранить эти изменения с DataTable обратно в базу данных.

Вкратце, не вносите изменения непосредственно в базу данных, а затем пытайтесь извлечь эти изменения из базы данных в свои локальные данные. Сначала сделайте изменения в локальных данных, затем сохраните эти изменения в базе данных.

Смежные вопросы