【发布时间】:2009-10-23 16:14:36
【问题描述】:
我在尝试修改某些 DataTable 对象时遇到了一些奇怪的行为。在第二次调用子例程时,将源 DataTable 复制到工作集时出现以下错误:
System.Data.ConstraintException 是 抓到消息=“列'pk'是 约束为唯一。价值 'path0.tag0' 已经存在。”
对于上下文,我在这段代码中定义了数据表的主键。
itemsTable.Columns.Add("pk")
For Each itemrow As DataRow In itemsTable.Rows
itemrow.Item("pk") = itemrow.Item("path").ToString + itemrow.Item("tag")
Next
Dim keyColumns() As DataColumn = {itemsTable.Columns("pk")}
itemsTable.PrimaryKey = keyColumns
然后我将使用此子例程中的代码更新表格
Private Sub DataChange(ByVal ClientHandles As Array, ByVal CurrentValues As Array, ByVal QualityValueArray() As String) _
Handles myOpcData.DataChange
Dim updateTable As New DataTable
Try
updateTable = itemsTable.Copy <-----Exception happens here
For index As Integer = 1 To ClientHandles.Length
updateTable.Rows(ClientHandles(index)).Item("value") = CurrentValues(index)
Next
itemsTable.Merge(updateTable)
Catch ex As Exception
Debug.Print(ex.ToString)
End Try
End Sub
关于如何修复我的代码的任何想法或建议是否有更好的方法来更新我的表格?
【问题讨论】:
标签: vb.net exception datatable primary-key constraints