Foxtable(狐表)用户栏目专家坐堂 → 请教一下,多条件求和比较后填入信息的事件代码


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

主题:请教一下,多条件求和比较后填入信息的事件代码

美女呀,离线,留言给我吧!
ganlan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1233 威望:0 精华:0 注册:2021/4/17 10:35:00
请教一下,多条件求和比较后填入信息的事件代码  发帖心情 Post By:2023/12/25 19:24:00 [只看该作者]

     表A中,想实现,明细中根据客户名称和账单月份,求和明细金额和明细已收金额,如果明细金额总和-明细已收金额总和>0,则月收款状态="未收完","已收完"。
请教一下,怎么写表的事件代码。


例子如下:
客户名   账单月份     金额       已收金额      月收款状态
A         23-11月      1000       900           未收完(说明:A客户23-11月总金额:1300-总已收1200=100)
B         23-11月      500       500           已收完 (说明:B客户23-11月总金额:500-总已收500=0) 
A         23-10月      1000       1000          已收完 (说明:A客户23-10月总金额:1000-总已收1000=0)   
A         23-11月      300       300            未收完(说明:A客户23-11月总金额:1300-总已收1200=100)
B         23-10月      1000       1000         已收完 (说明:B客户23-10月总金额:1600-总已收1600=0)     
B         23-10月      600       600           已收完 (说明:B客户23-10月总金额:1600-总已收1600=0)   
[此贴子已经被作者于2023/12/25 19:24:49编辑过]

 回到顶部
美女呀,离线,留言给我吧!
ganlan
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1233 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By:2023/12/25 19:25:00 [只看该作者]

例子如下:
客户名   账单月份     金额      已收金额      月收款状态
A         23-11月      1000       900           未收完(说明:A客户23-11月总金额:1300-总已收1200=100)
B         23-11月      500       500           已收完 (说明:B客户23-11月总金额:500-总已收500=0) 
A         23-10月      1000       1000          已收完 (说明:A客户23-10月总金额:1000-总已收1000=0)   
A         23-11月      300       300            未收完(说明:A客户23-11月总金额:1300-总已收1200=100)
B         23-10月      1000       1000         已收完 (说明:B客户23-10月总金额:1600-总已收1600=0)     
B         23-10月      600       600           已收完 (说明:B客户23-10月总金额:1600-总已收1600=0)   

 回到顶部
美女呀,离线,留言给我吧!
ganlan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1233 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By:2023/12/25 19:33:00 [只看该作者]

If e.DataCol.Name = "bs0130" Then '统计销售订单月收款状态
    If e.NewValue Is Nothing Then '
       e.DataRow("bs0133") = Nothing '
 
    Else
        Dim ddys As DataRow '订单账单已收
        Dim ddje As DataRow '订单账单金额

        
        ddje = DataTables("sdbs01").Compute("sum(bs0117)", "[bs01730] = '" & e.NewValue & "' and  bs0104 = '" & e.DataRow("bs0104") & "'")
        ddys = DataTables("sdbs01").Compute("sum(bs0141)", "[bs01730] = '" & e.NewValue & "' and  bs0104 = '" & e.DataRow("bs0104") & "'")

          
            If ddje > ddys Then
                
            e.DataRow("bs0133") = "未收完"
            Else
            e.DataRow("bs0133") = "已收完"
            End If 
            
            
    End If
End If



这样弄不成功
[此贴子已经被作者于2023/12/25 19:34:55编辑过]

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


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/25 20:30:00 [只看该作者]

Select Case e.DataCol.name
    Case "金额", "已收金额"
        If e.DataRow.IsNull("金额") OrElse e.DataRow.IsNull("已收金额") OrElse e.DataRow.IsNull("客户名") OrElse e.DataRow.IsNull("账单月份") Then
            e.DataRow("月收款状态") = Nothing
        Else
            Dim filter As String = "[客户名] = '" & e.DataRow("客户名") & "' and  账单月份 = '" & e.DataRow("账单月份") & "'"
            Dim ddje As Integer = e.DataTable.Compute("sum(金额)", filter)
            Dim ddys As Integer = e.DataTable.Compute("sum(已收金额)", filter)
            If ddje > ddys Then
                e.DataTable.replacefor("月收款状态", "未收完", filter)
            Else
                e.DataTable.replacefor("月收款状态", "已收完", filter)
            End If 
        End If
    Case "客户名"
        If e.NewValue > "" Then
            Dim filter As String = "[客户名] = '" & e.NewValue & "' and  账单月份 = '" & e.DataRow("账单月份") & "'"
            Dim ddje As Integer = e.DataTable.Compute("sum(金额)", filter)
            Dim ddys As Integer = e.DataTable.Compute("sum(已收金额)", filter)
            If ddje > ddys Then
                e.DataTable.replacefor("月收款状态", "未收完", filter)
            Else
                e.DataTable.replacefor("月收款状态", "已收完", filter)
            End If 
        End If
        If e.OldValue > "" Then
            Dim filter As String = "[客户名] = '" & e.OldValue & "' and  账单月份 = '" & e.DataRow("账单月份") & "'"
            Dim ddje As Integer = e.DataTable.Compute("sum(金额)", filter)
            Dim ddys As Integer = e.DataTable.Compute("sum(已收金额)", filter)
            If ddje > ddys Then
                e.DataTable.replacefor("月收款状态", "未收完", filter)
            Else
                e.DataTable.replacefor("月收款状态", "已收完", filter)
            End If 
        End If 
        
    Case "账单月份"
        If e.NewValue > "" Then
            Dim filter As String = "[客户名] = '" & e.DataRow("客户名") & "' and  账单月份 = '" & e.NewValue & "'"
            Dim ddje As Integer = e.DataTable.Compute("sum(金额)", filter)
            Dim ddys As Integer = e.DataTable.Compute("sum(已收金额)", filter)
            If ddje > ddys Then
                e.DataTable.replacefor("月收款状态", "未收完", filter)
            Else
                e.DataTable.replacefor("月收款状态", "已收完", filter)
            End If 
        End If
        If e.OldValue > "" Then
            Dim filter As String = "[客户名] = '" & e.DataRow("客户名") & "' and  账单月份 = '" & e.OldValue & "'"
            Dim ddje As Integer = e.DataTable.Compute("sum(金额)", filter)
            Dim ddys As Integer = e.DataTable.Compute("sum(已收金额)", filter)
            If ddje > ddys Then
                e.DataTable.replacefor("月收款状态", "未收完", filter)
            Else
                e.DataTable.replacefor("月收款状态", "已收完", filter)
            End If 
        End If 
End Select

 回到顶部
美女呀,离线,留言给我吧!
ganlan
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1233 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By:2023/12/26 11:12:00 [只看该作者]

学习了,谢谢

 回到顶部
美女呀,离线,留言给我吧!
ganlan
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1233 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By:2023/12/26 11:53:00 [只看该作者]

你好,我想写在DataColChanged,改了一下,好像不起作用
If e.DataCol.Name = "订单编号" Then
        If e.NewValue Is Nothing Then
            e.DataRow("月收款状态") = Nothing
        Else
            Dim filter As String = "[客户] = '" & e.DataRow("客户") & "' and  账单月 = '" & e.DataRow("账单月") & "'"
            Dim ddje As Integer = e.DataTable.Compute("sum(金额)", filter)
            Dim ddys As Integer = e.DataTable.Compute("sum(已收金额)", filter)
            If ddje > ddys Then
                e.DataTable.replacefor("月收款状态", "未收完", filter)
            Else
                e.DataTable.replacefor("月收款状态", "已收完", filter)
            End If 
        End If
End If
[此贴子已经被作者于2023/12/26 11:54:14编辑过]

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


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/26 11:58:00 [只看该作者]

这个代码和"订单编号"都没有什么关系啊。

如果看不懂代码,完全抄4楼的,改为自己的正确列名。然后旧数据选中金额列,重置一下

 回到顶部
美女呀,离线,留言给我吧!
ganlan
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:189 积分:1233 威望:0 精华:0 注册:2021/4/17 10:35:00
  发帖心情 Post By:2023/12/26 12:13:00 [只看该作者]

好的,搞好了,谢谢

 回到顶部