title: How to update/modify an existing row in an Access Database using Visual Basic
body: <p>I am having difficulty updating an existing row in an Access Database using VB. I want to be able to make changes to fields in an already populated existing row in my access table.</p>
  
  <p>The code I have relates to adding a new record at the bottom of the table rather than the above.</p>
  
  <pre><code>Public Class Form1
      Dim objConnection As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source = StudentDatabase.accdb")
      Dim objStudentDA As New OleDb.OleDbDataAdapter("Select * FROM Student", objConnection)
      Dim objStudentCB As New OleDb.OleDbCommandBuilder(objStudentDA)
      Dim objDs As New DataSet()
  
   Private Sub btnUpdate_Click(sender As Object, e As EventArgs) Handles btnUpdate.Click
  
          If txtStudentNum.Text &lt;&gt; "" And txtSurname.Text &lt;&gt; "" And txtAttendance.Text &lt;&gt; "" And txtCA1.Text &lt;&gt; "" And txtCA2.Text &lt;&gt; "" And txtFinalExamResult.Text &lt;&gt; "" Then
  
  
              Dim objRow3 = objDs.Tables("Student").Rows.Find(txtUpdateStudentID.Text.ToString)
  
              'Editing each field value based on textboxes
  
              objRow3.Item("FName") = txtUpdateFName.Text
              objRow3.Item("SName") = txtUpdateSName.Text
              objRow3.Item("Attendance") = txtUpdateAttendance.Text
              objRow3.Item("CA1") = txtUpdateCA1.Text
              objRow3.Item("CA2") = txtUpdateCA2.Text
              objRow3.Item("FinalExam") = txtUpdateFinalExam.Text
              objRow3.Item("OverallResult") = txtUpdateOverallGrade.Text
  
  
  **'ERROR HERE STATING THIS ROW ALREADY BELONGS TO A TABLE**
  
              objDs.Tables("Student").Rows.Add(objRow3)
              objStudentDA.Update(objDs, "Student")
              MsgBox("Record has been added to the IS2215 Database!")
              Retrieve()
          Else
              MsgBox("Error: You must not leave any fields blank!")
          End If
      End Sub
  
  Public Sub Retrieve()
  
          objDs.Clear()
          objStudentDA.FillSchema(objDs, SchemaType.Source, "Student")
          objStudentDA.Fill(objDs, "Student")
          cmbStudentFind.Items.Clear()
          Dim i As Integer, strCurrentID As String
          For i = 1 To objDs.Tables("Student").Rows.Count
              strCurrentID = objDs.Tables("Student").Rows(i - 1).Item("ID")
              cmbStudentFind.Items.Add(strCurrentID)
              cmbUpdateStudentID.Items.Add(strCurrentID)
          Next
          cmbStudentFind.SelectedIndex = 0
          cmbUpdateStudentID.SelectedIndex = 0
  
          FillUpdateDetails()
  
  
      End Sub
  
  Public Sub FillUpdateDetails()
          Dim objRow2 As DataRow
          objRow2 = objDs.Tables("Student").Rows.Find(cmbUpdateStudentID.SelectedItem.ToString)
          txtUpdateStudentID.Text = objRow2.Item("ID")
          txtUpdateFName.Text = objRow2.Item("FName")
          txtUpdateSName.Text = objRow2.Item("SName")
          txtUpdateAttendance.Text = objRow2.Item("Attendance")
          txtUpdateCA1.Text = objRow2.Item("CA1")
          txtUpdateCA2.Text = objRow2.Item("CA2")
          txtUpdateFinalExam.Text = objRow2.Item("FinalExam")
          txtUpdateOverallGrade.Text = objRow2.Item("OverallResult")
  
  
      End Sub
  
  End Class
  </code></pre>