Foxtable(狐表)用户栏目专家坐堂 → 求助,金额,计算如何 写好一些?


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

主题:求助,金额,计算如何 写好一些?

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
求助,金额,计算如何 写好一些?  发帖心情 Post By:2017/7/31 21:36:00 [只看该作者]

我在一个表事件:datacolchanged 写如下代码。放了msgbox 1.2.3  在我新增一行时。这个 弹窗,会弹:12次?我写的代码方式是正确的吗?有什么问题?

S elect Case e.DataCol.Name
    Case "分包预付款","分包进度款","分包洽商款","分包结算款"
        e.DataRow("分包付款合计")=e.DataRow("分包预付款")+e.DataRow("分包进度款")+e.DataRow("分包洽商款")+e.DataRow("分包结算款")
End S elect
S elect Case e.DataCol.Name
    Case "甲方预付款","甲方进度款","甲方洽商款","甲方结算款","质保金实收"
        e.DataRow("合同实收合计")=e.DataRow("甲方预付款")+e.DataRow("甲方进度款")+e.DataRow("甲方洽商款")+e.DataRow("甲方结算款")+e.DataRow("质保金实收")
End S elect
S elect Case e.DataCol.Name
    Case "销售费用","管理费用","财务费用"
        e.DataRow("公司运营合计")=e.DataRow("销售费用")+e.DataRow("管理费用")+e.DataRow("财务费用")
End S elect
S elect Case e.DataCol.Name
    Case "直接费合计","运营合计","分包付款合计","公司运营合计"
        e.DataRow("总支出")=e.DataRow("直接费合计")+e.DataRow("运营合计")+e.DataRow("分包付款合计")+e.DataRow("公司运营合计")
End Se lect
msgbox(1)
Select Case e.DataCol.Name
    Case "合同实收合计","分红比例1","分红比例2","总支出","实收总利润"
       If e.DataRow.Isnull("合同实收合计") = False AndAlso e.DataRow.Isnull("实收总利润") = False Then
        e.DataRow("实收总利润")=e.DataRow("合同实收合计")-e.DataRow("总支出")
        'If e.DataRow("实收总利润") > 0 Then
            e.DataRow("实收应分红1")=e.DataRow("分红比例1")*e.DataRow("实收总利润")
            e.DataRow("实收应分红2")=e.DataRow("分红比例2")*e.DataRow("实收总利润")
        'Else
            'e.DataRow("实收应分红1")=e.DataRow("实收总利润")/2
            'e.DataRow("实收应分红2")=-e.DataRow("实收总利润")/2
        End If
End S elect
msgbox(2)
S elect Case e.DataCol.Name
    Case "合同预算合计","结算合计","分红比例1","分红比例2","总支出","实收总利润"
        If e.DataRow("结算合计") > 0 Then
            e.DataRow("应收总利润")=e.DataRow("结算合计")-e.DataRow("总支出")
            'If e.DataRow("应收总利润") > 0 Then
                e.DataRow("应分红1")=e.DataRow("分红比例1")*e.DataRow("应收总利润")
                e.DataRow("应分红2")=e.DataRow("分红比例2")*e.DataRow("应收总利润")
            'Else
                'e.DataRow("应分红1")=e.DataRow("应收总利润")/2
                'e.DataRow("应分红2")=-e.DataRow("应收总利润")/2
            'End If
        ElseIf e.DataRow("合同预算合计") > 0 Then
            e.DataRow("应收总利润")=e.DataRow("合同预算合计")-e.DataRow("总支出")
            'If e.DataRow("应收总利润") > 0 Then
                e.DataRow("应分红1")=e.DataRow("分红比例1")*e.DataRow("应收总利润")
                e.DataRow("应分红2")=e.DataRow("分红比例2")*e.DataRow("应收总利润")
            'Else
                'e.DataRow("应分红1")=e.DataRow("应收总利润")/2
                'e.DataRow("应分红2")=-e.DataRow("应收总利润")/2
            'End If
        End If
End S elect
S elect Case e.DataCol.name
    Case "合同结算额","洽商增加结算额","洽商减少结算额","其中甲供材料结算","设计费结算","质保金结算"
        e.DataRow("结算合计")=e.DataRow("合同结算额")+e.DataRow("洽商增加结算额")+e.DataRow("设计费结算")-e.DataRow("其中甲供材料结算")+e.DataRow("质保金结算")-e.DataRow("洽商减少结算额")
End S elect
msgbox(3)
S elect Case e.DataCol.name
    Case "合同实收合计","结算合计","未收质保金","质保金结算","质保金实收","合同未收合计","合同预算合计","质保金预算"
        If e.DataRow("结算合计") > 0 Then
            e.DataRow("未收质保金") =e.DataRow("质保金结算")-e.DataRow("质保金实收")
            e.DataRow("未收工程款") =e.DataRow("结算合计")-e.DataRow("合同实收合计")-e.DataRow("未收质保金")
            e.DataRow("合同未收合计")=e.DataRow("未收质保金")+ e.DataRow("未收工程款")
        ElseIf e.DataRow("合同预算合计") > 0 Then
            e.DataRow("未收质保金") =e.DataRow("质保金预算")-e.DataRow("质保金实收")
            e.DataRow("未收工程款") =e.DataRow("合同预算合计")-e.DataRow("合同实收合计")-e.DataRow("未收质保金")
            e.DataRow("合同未收合计")=e.DataRow("未收质保金")+ e.DataRow("未收工程款")
        Else
            e.DataRow("未收质保金") =0
            e.DataRow("未收工程款") =0
            e.DataRow("合同未收合计")=0
        End If
End S elect
If e.DataCol.Name = "质保金预算" Then
    If e.DataRow("质保金预算") > 99 Then
        e.DataRow("有压质保金") = True
    Else
        e.DataRow("有压质保金") = False
    End If
End If

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


加好友 发短信
等级:超级版主 帖子:112419 积分:572369 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/31 22:00:00 [只看该作者]

弹12次是正常的。从表面看代码看不出什么问题。运行有没有问题?

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2017/7/31 22:02:00 [只看该作者]

之前:2017-07-28版,弹错。
所有我才检查它。

刚才我又更新了:2017-07-31版,不弹错了。

打开,新建窗口,1-1.5S左右,不是很快。

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


加好友 发短信
等级:超级版主 帖子:112419 积分:572369 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/31 22:30:00 [只看该作者]

这么多字段的触发和计算,这算是快的了

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/1 9:46:00 [只看该作者]

 每个单元格的值的修改,都会触发datacolchanged事件,在事件里,如果你再次修改其他列的值,同样也会触发datacolchanged事件。

 

 当然,如果你不想重复触发,可以暂时禁用 http://www.foxtable.com/webhelp/scr/2218.htm

 


 回到顶部