Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共8 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
ganlan 发表于: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编辑过]
2楼
ganlan 发表于: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)   
3楼
ganlan 发表于: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楼
有点蓝 发表于: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
5楼
ganlan 发表于:2023/12/26 11:12:00
学习了,谢谢
6楼
ganlan 发表于: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楼
有点蓝 发表于:2023/12/26 11:58:00
这个代码和"订单编号"都没有什么关系啊。

如果看不懂代码,完全抄4楼的,改为自己的正确列名。然后旧数据选中金额列,重置一下
8楼
ganlan 发表于:2023/12/26 12:13:00
好的,搞好了,谢谢
共8 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .05469 s, 2 queries.