以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教:这个问题是怎样造成的呢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=27810)

--  作者:关键下一秒
--  发布时间:2013/1/10 19:33:00
--  请教:这个问题是怎样造成的呢?

Dim drs As List (of DataRow) = t.DataTable.Select(flt)
If drs.count>0 Then
    For Each dr As DataRow In drs
       If dr IsNot Nothing Then
             dr.Delete()
       End If
   Next
   t.DataTable.save
End If

 

\'flt 为过滤公式。确认无问题。每次删除了一条记录后就会出示以下错误:



此主题相关图片如下:未命名.jpg
按此在新窗口浏览图片
经测试,这个错误是在 dr.delete() 语句产生的。

[此贴子已经被作者于2013-1-10 19:33:41编辑过]

--  作者:有点甜
--  发布时间:2013/1/10 19:54:00
--  
做个例子发上来
--  作者:e-png
--  发布时间:2013/1/10 20:02:00
--  
从最后一行往前面行逐行删除才行。
--  作者:关键下一秒
--  发布时间:2013/1/10 20:28:00
--  
以下是引用e-png在2013-1-10 20:02:00的发言:
从最后一行往前面行逐行删除才行。

如何从最后一行往前面逐行删除呢?


--  作者:e-png
--  发布时间:2013/1/10 22:48:00
--  

select 用_Identify 倒序试试

不行这样 for i as integer = drs.count-1 to 0 step -1 试试吧。


--  作者:lin_hailun
--  发布时间:2013/1/11 11:53:00
--  
 又或者这样

Dim drs As List (of DataRow) = t.DataTable.Select(flt)
If drs.count>0 Then
    For i as integer = 0 to drs.count - 1
        drs(0).delete
   Next
   t.DataTable.save
End If


--  作者:关键下一秒
--  发布时间:2013/1/11 12:56:00
--  
林总,你的方法行不通啊,又提示另一个错误:不能通过已删除的行访问该行的信息.
[此贴子已经被作者于2013-1-11 13:11:59编辑过]

--  作者:关键下一秒
--  发布时间:2013/1/11 13:12:00
--  
林总,你的方法行不通啊,又提示另一个错误:不能通过已删除的行访问该行的信息.

--  作者:Liuxinyu
--  发布时间:2013/1/11 14:25:00
--  

请教各位:

 

既然是删除行,为什么不是直接删除,而是查询之后再删除。既费时,又费力。

 

t.datatable.deletefor(flt)

t.datatable.save

 

在什么情况下,会产生类似楼主的删除动作?

[此贴子已经被作者于2013-1-11 14:26:15编辑过]

--  作者:lin_hailun
--  发布时间:2013/1/11 15:04:00
--  
 恩恩,确实,9楼正解。看到本质了。