У меня есть внешний вид Бэкэнд Access DB. У меня есть кнопка «Сохранить и обновить». Всякий раз, когда я использую приведенный ниже код сохранения, он работает и добавляет запись в мою базу данных и отображает ее правильно в datagridview, если я нажимаю кнопку обновления на вновь созданной записи, кажется, что запись все еще находится в режиме «EDIT» при доступе, давая мне ошибку параллелизма, когда я пытаюсь сделать обновление записи. Должен ли я отключить соединение после сохранения ниже, если это так, вы можете показать мне, как удалить это соединение или закрыть запись в db доступа? Единственное исправление, которое работает, это добавить application.restart() в конец моей кнопки сохранения, КОТОРЫЙ я действительно не хочу этого делать.vb.net удаляет DB-соединение после сохранения записи
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
If tbAEU.Text = "" Or cbIA.Text = "" Or cbCI.Text = "" Or tbS.Text = "" Or tbD.Text = "" Then
MessageBox.Show("Please do not leave any field blank", "Validation")
Return
End If
cbAdded.Text = "No"
If intInc <> -1 Then
Dim cb As New OleDb.OleDbCommandBuilder(da)
Dim dsNewRow As DataRow
dsNewRow = ds.Tables("SDMDB").NewRow()
dsNewRow.Item("AffectedEndUser") = tbAEU.Text
dsNewRow.Item("IncidentArea") = cbIA.Text
dsNewRow.Item("ConfigItem") = cbCI.Text
dsNewRow.Item("Summary") = tbS.Text
dsNewRow.Item("Description") = tbD.Text
dsNewRow.Item("ActivityLog") = tbAL.Text
dsNewRow.Item("AddedtoSDM") = cbAdded.Text
ds.Tables("SDMDB").Rows.Add(dsNewRow)
da.Update(ds, "SDMDB")
MessageBox.Show("New Record added to the Database", "Save")
btnSave.Enabled = False
btnAdd.Enabled = True
btnDelete.Enabled = False
btnPWReset.Enabled = True
btnUnlock.Enabled = True
btnEdit.Enabled = True
btnCancel.Enabled = False
cbIA.Enabled = False
cbCI.Enabled = False
SetAllAsReadOnly()
UpdateDatabase()
Me.Refresh()
moveforward()
movebackward()
End If
End Sub
Подключение Код:
strDbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
Dim sDrive As String, sDrives() As String
sDrives = ListAllDrives()
For Each sDrive In sDrives
Dim strTemp As String = sDrive & "\AppData\SDMDB\SDMDB.mdb"
If File.Exists(strTemp) Then
strDbSource = "Data Source = " & strTemp
End If
Next
con.ConnectionString = strDbProvider & strDbSource
con.Open()
strSQL = "SELECT * FROM SDM_Details"
da = New OleDb.OleDbDataAdapter(strSQL, con)
da.Fill(ds, "SDMDB")
con.Close()
Я бы порекомендовал, чтобы любой вызов для соединений был завернут в «Использование» операторов, просто предложение. – Codexer
Это исправить эту проблему? Будет ли это закрывать соединение, позволяя мне редактировать эту же запись? –
Да, он будет распоряжаться ресурсами, используемыми для этих соединений, и освобождать их. Я не вижу ваш код для обновления, я что-то упустил? – Codexer