以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  菜鸟求助  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=62009)

--  作者:youngling
--  发布时间:2014/12/24 0:07:00
--  菜鸟求助

我想完成一个功能,就是如果删除了出库明细表中的一行数据,就自动更新订单明细表中的累计出货数量。

 

订单明细表中的累计出货数量更新代码如下(这个还是甜老师帮我改的呢):

 

Select Case e.DataCol.Name
    Case "累计出货数量"
           Dim filter As String = "客户订单号 = \'" & e.DataRow("客户订单号") & "\' and 客户产品号 = \'" & e.DataRow("客户产品号") & "\' and 订单行号 = \'" & e.DataRow("订单行号") & "\'"

         Dim sum As Double = DataTables("出库明细").Compute("sum(实际交货数量)", filter)
        e.DataTable.ReplaceFor("累计出货数量", sum, filter)
End Select

 

我在出库明细表的DataRowDeleting里面用以下代码希望可以实现这个功能,但是我试了2中方法都不行,调试了好久,无奈只能又来求助了。

 

代码1:

 

Dim dr2 As DataRow
\'否则在订单明细表查找同行号的客户产品号,将找到的行赋值给变量dr
dr2 = DataTables("订单明细表").Find("[客户订单号] = \'" & e.DataRow("客户订单号") & "\' And [订单行号] = \'" & e.DataRow("订单行号") & "\'")
If dr2 IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
    Dim filter As String = "客户订单号 = \'" & e.DataRow("客户订单号") & "\' and 订单行号 = \'" & e.DataRow("订单行号") & "\'"
    DataTables("订单明细表").DataCols("累计出货数量").RaiseDataColChanged(filter)
End If

 

代码2:

Dim dr2 As DataRow
\'否则在订单明细表查找同行号的客户产品号,将找到的行赋值给变量dr
dr2 = DataTables("订单明细表").Find("[客户订单号] = \'" & e.DataRow("客户订单号") & "\' And [订单行号] = \'" & e.DataRow("订单行号") & "\'")
If dr2 IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
    Dim filter As String = "客户订单号 = \'" & e.DataRow("客户订单号") & "\' and 订单行号 = \'" & e.DataRow("订单行号") & "\'"
    DataTables("订单明细表").DataCols("累计出货数量").RaiseDataColChanged(filter)
End If

 

无论是代码1还是代码2都不会自动更新订单明细表中的累计出货数量。

 

求助,老师们帮我看下哪里有问题,谢谢啦。


--  作者:Bin
--  发布时间:2014/12/24 7:57:00
--  
Dim filter As String = "客户订单号 = \'" & e.DataRow("客户订单号") & "\' and 订单行号 = \'" & e.DataRow("订单行号") & "\'"
    DataTables("订单明细表").DataCols("累计出货数量").RaiseDataColChanged(filter)

直接这句代码即可,而且你要写到Deleted事件


--  作者:youngling
--  发布时间:2014/12/24 8:42:00
--  

不行呀,bin大侠,提示错误:

 

.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.11.11.1
错误所在事件:表,出库明细,DataRowDeleted
详细错误信息:
调用的目标发生了异常。
不能通过已删除的行访问该行的信息。

 

再帮我看下呢,谢谢!



--  作者:Bin
--  发布时间:2014/12/24 8:48:00
--  
用2个全局变量

在DeleteING 事件中把 订单号那些存起来

Deleted事件再从变量中取

--  作者:youngling
--  发布时间:2014/12/24 9:24:00
--  

搞定了,谢谢bin大侠!