并发冲突:更新了预期的1条记录中的0条

时间:2016-07-18 15:13:28

标签: vb.net

有人可以帮助我吗?如何摆脱这个错误?

  

并发冲突:更新了预期的1条记录中的0

过去几天我一直在努力使用update命令。我尝试了很多来自互联网的解决方案,但我无法解决这个问题。

Imports Microsoft.Office
Imports System.Data.OleDb

Public Class Form1
    Dim dt As New DataTable
    Dim cnn As New OleDb.OleDbConnection

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'filling analyst filter
        Dim sText As String = String.Empty
        Dim sConnString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\ecxx-store\Exxx xxxxsk\Txx Axxx\Enxx Flxxx\Source\Exx_Exxx_Flagging.accdb" 'Put your connection string in here
        Using cn As New OleDb.OleDbConnection(sConnString)
            cn.Open()
            Dim cmd As New OleDb.OleDbCommand("SELECT Distinct Analyst FROM EF ORDER BY Analyst", cn)
            Dim r As OleDb.OleDbDataReader = cmd.ExecuteReader()
            While r.Read()
                ComboBox7.Items.Add(r("analyst"))
            End While
            r.Close()
            cn.Close()
        End Using
        'end of filling analyst filter
        Me.EFTableAdapter.Fill(Me.Exx_Exxxx_ShippingDataset.EF) 
        Me.Label19.Text = "Welcome " & StrConv(Environment.MachineName, vbProperCase)
        Me.Label20.Text = EFBindingSource.Count.ToString() & " entries"
        'Setting Followup Status
        Me.ComboBox8.Text = "Waiting for approval"
        'disabling Second Analyst Details
        Me.txtsecondanalyst.Enabled = False
        Me.txtapproval.Enabled = False
        Me.txtnotes.Enabled = False 
    End Sub

    Private Sub txtdof_ValueChanged(sender As Object, e As EventArgs) Handles txtdof.ValueChanged
        Me.txtnd.Text = DateDiff(DateInterval.Day, CDate(txtdof.Text), Now())
    End Sub

    Private Sub ComboBox7_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox7.SelectedIndexChanged
        If IsNothing(Me.ComboBox8.Text) Then
            EFBindingSource.Filter = "[Analyst] LIKE '%" & ComboBox7.Text & "%'"
        Else
            EFBindingSource.Filter = "[FollowupStatus] LIKE '%" & ComboBox8.Text & "%' AND [Analyst] Like '%" & ComboBox7.Text & "%'"
        End If
        'count of datagrid
        Me.Label20.Text = EFBindingSource.Count.ToString() & " entries"
    End Sub

    Private Sub ComboBox8_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox8.SelectedIndexChanged
        If IsNothing(Me.ComboBox7.Text) Then
            EFBindingSource.Filter = "[FollowupStatus] LIKE '%" & ComboBox8.Text & "%'"
        Else
            EFBindingSource.Filter = "[FollowupStatus] LIKE '%" & ComboBox8.Text & "%' AND [Analyst] Like '%" & ComboBox7.Text & "%'"
        End If
        'count of datagrid
        Me.Label20.Text = EFBindingSource.Count.ToString() & " entries"
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        'update
        Me.txtnd.Visible = True
        Me.txtnd.Text = DateDiff(DateInterval.Day, CDate(txtdof.Text), Now())
        On Error GoTo SaveErr
        EFBindingSource.EndEdit()
        EFTableAdapter.Update(Exx_Exxxx_ShippingDataset.EF)
        Me.txtsecondanalyst.Enabled = False
        Me.txtapproval.Enabled = False
        Me.txtnotes.Enabled = False
        MsgBox("Record Updated or Saved")
SaveErr:
    End Sub

    Private Sub Form1_Closed(sender As Object, e As EventArgs) Handles Me.Closed
        EFBindingSource.EndEdit()
        Me.TableAdapterManager1.UpdateAll(Me.Exx_Exxx_ShippingDataset)
    End Sub
End Class

1 个答案:

答案 0 :(得分:0)

根据Concurrency violation: the UpdateCommand affected 0 of the expected 1 records. DB concurrencyException was unhandled

你打电话

Me.EFTableAdapter.Fill(Me.Exx_Exxxx_ShippingDataset.EF)
Form_Load中的

,但无法保证在您拨打电话时不会更改行

EFTableAdapter.Update(Exx_Exxxx_ShippingDataset.EF)
Button1_Click

中的

在链接的答案中,

  

ADO.Net保留从数据库中选择列时的值。当它执行更新时,条件是提交时没有任何列发生更改。

也许你应该打电话给

dt = dt.GetChanges()

Button1_Click中更新之前,以便使用数据库中的最新值更新数据表。