以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  偶遇的错误:DataTable 内部索引已损坏:“8”  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=29985)

--  作者:atmetmicoo
--  发布时间:2013/3/18 15:50:00
--  偶遇的错误:DataTable 内部索引已损坏:“8”
狐爸,

发布后的软件在运行过程中经常会遇到些莫名其妙的错误,必须重启才能使用,错误如下:

.NET Framework 版本:2.0.50727.5466
Foxtable 版本:2012.11.29.1
错误所在事件:
详细错误信息:
System.InvalidOperationException: DataTable 内部索引已损坏:“8”
   在 System.Data.DataTable.SetNewRecordWorker(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Int32 position, Boolean fireEvent, Exception& deferredException)
   在 System.Data.DataTable.SetNewRecord(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Boolean fireEvent)
   在 System.Data.DataRow.SetNewRecord(Int32 record)
   在 System.Data.DataRow.EndEdit()
   在 System.Data.DataRow.set_Item(DataColumn column, Object value)
   在 Foxtable.DataTable.O100lOO0O1(Object O0l0l1, OleDbRowUpdatedEventArgs O)
   在 System.Data.OleDb.OleDbDataAdapter.OnRowUpdated(RowUpdatedEventArgs value)
   在 System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
   在 System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows)
   在 Foxtable.DataTable.O1llOO100l0lO(DataRow[] O00O)

有些时候提示:DataTable 内部索引已损坏:“5

99%的时候运行正常,请教什么情况下才会损坏DataTable的内部索引呀?

--  作者:atmetmicoo
--  发布时间:2013/3/18 16:16:00
--  
顶一下。
--  作者:狐狸爸爸
--  发布时间:2013/3/18 17:13:00
--  
可能和你的代码有关系,请留意一下规律,这样才能分析原因。
--  作者:atmetmicoo
--  发布时间:2013/3/21 10:15:00
--  
好的,我先克服克服
--  作者:atmetmicoo
--  发布时间:2013/4/1 9:11:00
--  

找不到问题根源,又出现


--  作者:Bin
--  发布时间:2013/4/1 9:18:00
--  
通过使用多个语句调用DataTable.Select方法时,可能会返回错误的结果。
--  作者:Bin
--  发布时间:2013/4/1 9:19:00
--  
如果正在编辑数据表对象中的一个或多个行,然后发生DataTable.Merge操作,可能会损坏DataTable对象的数据集对象的记录管理器。
一般我们会使用DataTable.Select()方法来筛选数据,而DataTable会在执行Select()方法的时候系统会默认创建一个DataView,而DataView创建的时候会创建内部索引,如果这个时候数据被操作(添加,删除),那么内部索引就会被破坏,从而出错。
[此贴子已经被作者于2013-4-1 9:26:29编辑过]

--  作者:关键下一秒
--  发布时间:2014/9/17 0:06:00
--  
以下是引用Bin在2013-4-1 9:19:00的发言:
如果正在编辑数据表对象中的一个或多个行,然后发生DataTable.Merge操作,可能会损坏DataTable对象的数据集对象的记录管理器。
一般我们会使用DataTable.Select()方法来筛选数据,而DataTable会在执行Select()方法的时候系统会默认创建一个DataView,而DataView创建的时候会创建内部索引,如果这个时候数据被操作(添加,删除),那么内部索引就会被破坏,从而出错。
[此贴子已经被作者于2013-4-1 9:26:29编辑过]

请教:如何避免此问题呢?


--  作者:blackzhu
--  发布时间:2014/9/17 8:17:00
--  
这个问题无从下手的,删除数据保存下 重启应该会好的.