以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教计算  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=126539)

--  作者:xusuyang
--  发布时间:2018/10/23 22:01:00
--  请教计算

老师:我设计了一个“订货出库”表。其中包含“出库产品详细信息_数量”、“出库产品详细信息_含税单价”、“出库产品详细信息_无税单价”、“出库产品详细信息_总金额”【此列为表达式:IsNull([出库产品详细信息_数量] * [出库产品详细信息_含税单价] ,0) + IsNull([出库产品详细信息_数量] * [出库产品详细信息_无税单价] ,0)】、“出库产品详细信息_收款金额”、“货款状态_欠款金额”等列。

请问老师:1、当我在“出库产品详细信息_数量”确输入如150时,在“出库产品详细信息_含税单价”、“出库产品详细信息_无税单价”任意列输入一个数字如30.00时,未在"出库产品详细信息_收款金额" 列输入数字,如何实现"出库产品详细信息_总金额"的数字【4500.00】同时出现在"货款状态_欠款金额"中?

2、当我在“出库产品详细信息_数量”确输入如200时,在“出库产品详细信息_含税单价”、“出库产品详细信息_无税单价”任意列输入一个数字如30.00时,在"出库产品详细信息_收款金额" 列输入数字【2500.00】,如何实现"货款状态_欠款金额"为【3500.00】?

我原有相关代码:Select Case e.DataCol.Name
    Case  "购货客户通讯详细信息_客户编码","出库产品详细信息_总金额","出库产品详细信息_收款金额"
        Dim drs  As  List(of DataRow)
        Dim Filter As String
        Filter =  "[_Identify] >= " & e.DataRow("_Identify") & " And [购货客户通讯详细信息_客户编码] = \'" & e.DataRow("购货客户通讯详细信息_客户编码") & "\'"
        drs = e.DataTable.Select(Filter)
        For Each dr As  DataRow  In drs
            Filter =  "[_Identify] <= " & dr("_Identify") & " And [购货客户通讯详细信息_客户编码] = \'" & dr("购货客户通讯详细信息_客户编码") & "\'"
            Dim Val1 As Double = e.DataTable.Compute("Sum(出库产品详细信息_总金额)",Filter)
            Dim Val2 As Double = e.DataTable.Compute("Sum(出库产品详细信息_收款金额)",Filter)
            Dim Val3 As Double = e.DataTable.Compute("Sum(货款状态_欠款金额)",Filter & " And 出库产品详细信息_总金额 Is null And 出库产品详细信息_收款金额 Is null")
            dr("货款状态_欠款金额") = Val1 - Val2 + val3
        Next
        If e.DataCol.Name = "购货客户通讯详细信息_客户编码" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue  Then
            Filter =  "[_Identify] > " & e.DataRow("_Identify") & " And [购货客户通讯详细信息_客户编码] = \'" & e.OldValue &  "\'"
            drs = e.DataTable.Select(Filter)
            For Each dr As  DataRow  In drs
                Filter =  "[_Identify] <= " & dr("_Identify") & " And [购货客户通讯详细信息_客户编码] = \'" & dr("购货客户通讯详细信息_客户编码") & "\'"
                Dim Val1 As Double = e.DataTable.Compute("Sum(出库产品详细信息_总金额)",Filter)
                Dim Val2 As Double = e.DataTable.Compute("Sum(出库产品详细信息_收款金额)",Filter)
                Dim Val3 As Double = e.DataTable.Compute("Sum(货款状态_欠款金额)",Filter & " and 出库产品详细信息_总金额 is null and 出库产品详细信息_收款金额 Is null")
                dr("货款状态_欠款金额") = Val1 - Val2 + val3
            Next
        End If
    End  Select
请问上述代码如何修改能实现?或重新的代码如何写?

谢谢!!


--  作者:有点蓝
--  发布时间:2018/10/23 22:09:00
--  
参考:http://www.foxtable.com/webhelp/scr/2381.htm

Case  "购货客户通讯详细信息_客户编码","出库产品详细信息_收款金额","出库产品详细信息_数量","出库产品详细信息_含税单价","出库产品详细信息_无税单价"

--  作者:xusuyang
--  发布时间:2018/10/23 22:34:00
--  
谢谢!!!