以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 不能通过已删除的行访问该行的信息 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=122893) |
-- 作者:edisontsui -- 发布时间:2018/8/3 17:02:00 -- 不能通过已删除的行访问该行的信息 我在“JPK612备料”的datacolchanged里面有如下代码: If e.DataCol.name = "需求数量" If e.DataRow("批号") = "" Else Dim re As Boolean = False For Each dr As DataRow In DataTables("批号表").DataRows If dr("物料编号") = e.DataRow("零件号") Then dr("库存数量") = dr("库存数量") - e.DataRow("需求数量") - e.OldValue dr("批号变动记录") = "出入库变动:" & Date.now & " " & User.Name dr("库存数量变动记录") = "出入库变动:" & Date.now & " " & User.Name re = True Exit For Else Continue For End If Next If re = False Dim dr As DataRow dr = DataTables("批号表").AddNew() dr("批号") = e.DataRow("批号") dr("物料编号") = e.DataRow("零件号") dr("库存数量") = 0 - e.DataRow("需求数量") dr("批号变动记录") = "出入库变动:" & Date.now & " " & User.Name dr("库存数量变动记录") = "出入库变动:" & Date.now & " " & User.Name End If End If end if 我在“批号表”的datacolchanged里面有如下代码: If e.DataCol.name = "库存数量" If e.DataRow("库存数量") = 0 e.DataRow.delete End If End If 当我在“JPK612备料”输入一条记录,比如数量为1之后,此时“批号表”会增加一条记录,其数量也为1;如果我再在“JPK612备料”输入 一条记录,比如数量为-1之后,“批号表”里面此前增加的记录因为库存数量变为了0而删除,但是,却出现如下警告: .NET Framework 版本:2.0.50727.8789 Foxtable 版本:2017.3.18.1 错误所在事件:表,JPK612备料,DataColChanged 详细错误信息: 调用的目标发生了异常。 不能通过已删除的行访问该行的信息。 这是为什么呢? 我们希望不要出现上述警告,该如何修改代码?谢谢。
|
-- 作者:有点甜 -- 发布时间:2018/8/3 18:33:00 -- 不要在datacolchanged事件删除行。
你可以做一个按钮删除,或者关闭项目的时候删除。 |
-- 作者:edisontsui -- 发布时间:2018/8/4 8:54:00 -- 关闭项目的时候删除,代码如何写? |
-- 作者:有点蓝 -- 发布时间:2018/8/4 9:30:00 -- DataTables("批号表").DeleteFor("库存数量=0") |
-- 作者:edisontsui -- 发布时间:2018/8/4 11:39:00 -- 我将以上代码放入beforecloseproject里面去,待我关闭项目以及重开项目之后,发现“库存数量”=0的那行没有被删除。为什么呢? |
-- 作者:有点蓝 -- 发布时间:2018/8/4 12:00:00 -- DataTables("批号表").DeleteFor("库存数量=0") DataTables("批号表").save 或者 DataTables("批号表").sqlDeleteFor("库存数量=0") |
-- 作者:edisontsui -- 发布时间:2018/8/4 13:15:00 -- 这个有效。谢谢。 |
-- 作者:edisontsui -- 发布时间:2018/8/13 18:20:00 -- 批号表_DataColChanged
If e.DataCol.name
= "库存数量" If e.DataRow("库存数量") = 0 e.DataRow.delete End If End If “批号表”的datacolchanged里面有如上代码,我要改成:如果是“出入库”那个表导致的“库存数量" = 0,才允许执行删除命令。代码应该如何写?谢谢。 |
-- 作者:有点甜 -- 发布时间:2018/8/13 18:54:00 -- 那就不要在datacolchanged事件写delete代码。
请在【出入库】导致库存数量变化的那个地方写删除的代码。 |
-- 作者:edisontsui -- 发布时间:2018/8/14 11:19:00 -- If e.DataCol.name
= "入库数量" OrElse e.DataCol.name = "出库数量" If e.DataRow("批号") = "" Else Dim re As Boolean = False For Each dr As DataRow In DataTables("批号表").DataRows If dr("批号") =
e.DataRow("批号") And dr("物料编号") = e.DataRow("物料编号")
Then dr("库存数量") =
e.DataRow("入库数量") + e.DataRow("出库数量") + dr("库存数量")
- e.OldValue dr("批号变动记录") = "出入库变动:"
& Date.now & " " & User.Name dr("库存数量变动记录") =
"出入库变动:" & Date.now & " " & User.Name re = True Exit For Else Continue For End If Next If re =False Dim dr As DataRow dr = DataTables("批号表").AddNew() dr("批号") =
e.DataRow("批号") dr("物料编号") =
e.DataRow("物料编号") dr("物料名称") =
e.DataRow("物料名称") dr("类别") =
e.DataRow("类别") dr("来源") =
e.DataRow("来源") dr("客户简称") =
e.DataRow("客户") dr("库存数量") =
e.DataRow("入库数量") + e.DataRow("出库数量") dr("批号变动记录") = "出入库变动:"
& Date.now & " " & User.Name dr("库存数量变动记录") = "出入库变动:"
& Date.now & " " & User.Name End If End If End If 有道理。以上是“出入库”dtacolchanged里面的有关代码,如何加入代码达到如上目的? 谢谢。 |