Foxtable(狐表)用户栏目专家坐堂 → 请教计算


  共有2144人关注过本帖树形打印复制链接

主题:请教计算

帅哥哟,离线,有人找我吗?
xusuyang
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:100 积分:1120 威望:0 精华:0 注册:2017/5/3 18:40:00
请教计算  发帖心情 Post By: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
请问上述代码如何修改能实现?或重新的代码如何写?

谢谢!!


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/23 22:09:00 [只看该作者]

参考:http://www.foxtable.com/webhelp/scr/2381.htm

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

 回到顶部
帅哥哟,离线,有人找我吗?
xusuyang
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:100 积分:1120 威望:0 精华:0 注册:2017/5/3 18:40:00
  发帖心情 Post By:2018/10/23 22:34:00 [只看该作者]

谢谢!!!

 回到顶部