以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- datacolchanged事件无法自动计算 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=176989) |
-- 作者:Phoebe菲比 -- 发布时间:2022/5/5 21:39:00 -- datacolchanged事件无法自动计算 如图所示,当我输入两个不同的费率后,合价部分无法汇总计算。 请问我的代码逻辑是不是有错误? 代码如下: Select Case e.DataCol.Name Case "其中_管理费率","利润费率" Dim dr As DataRow = e.DataRow If dr.IsNull("其中_管理费率") OrElse dr.IsNull("利润费率") Then dr("其中_管理费") = Round2((dr("其中_人工费") + dr("其中_机具费")) * dr("其中_管理费率"),2) dr("利润") = Round2((dr("其中_人工费") + dr("其中_机具费")) * dr("利润费率"),2) dr("基价") = dr("其中_人工费") + dr("其中_材料费") + dr("其中_机具费") + dr("其中_管理费") dr("综合单价") = dr("基价") + dr("利润") Else dr("其中_管理费") = Nothing dr("利润") = Nothing dr("基价") = dr("其中_人工费") + dr("其中_材料费") + dr("其中_机具费") + dr("其中_管理费") dr("综合单价") = dr("基价") + dr("利润") End If End Select [此贴子已经被作者于2022/5/5 21:42:10编辑过]
|
-- 作者:Phoebe菲比 -- 发布时间:2022/5/5 21:39:00 -- Select Case e.DataCol.Name Case "其中_管理费率","利润费率" Dim dr As DataRow = e.DataRow If dr.IsNull("其中_管理费率") OrElse dr.IsNull("利润费率") Then dr("其中_管理费") = Round2((dr("其中_人工费") + dr("其中_机具费")) * dr("其中_管理费率"),2) dr("利润") = Round2((dr("其中_人工费") + dr("其中_机具费")) * dr("利润费率"),2) dr("基价") = dr("其中_人工费") + dr("其中_材料费") + dr("其中_机具费") + dr("其中_管理费") dr("综合单价") = dr("基价") + dr("利润") Else dr("其中_管理费") = Nothing dr("利润") = Nothing dr("基价") = dr("其中_人工费") + dr("其中_材料费") + dr("其中_机具费") + dr("其中_管理费") dr("综合单价") = dr("基价") + dr("利润") End If End Select
|
-- 作者:有点蓝 -- 发布时间:2022/5/5 22:32:00 -- Dim dr As DataRow = e.DataRow Select Case e.DataCol.Name Case "其中_管理费率", "其中_机具费", "其中_人工费" If dr.IsNull("其中_管理费率") Then dr("其中_管理费") = Nothing Else dr("其中_管理费") = Round2((dr("其中_人工费") + dr("其中_机具费")) * dr("其中_管理费率"), 2) End If End Select Select Case e.DataCol.Name Case "利润费率", "其中_机具费", "其中_人工费" If dr.IsNull("其中_管理费率") Then dr("利润") = Nothing Else dr("利润") = Round2((dr("其中_人工费") + dr("其中_机具费")) * dr("利润费率"), 2) End If End Select Select Case e.DataCol.Name Case "其中_材料费", "其中_机具费", "其中_人工费", "其中_管理费" dr("基价") = dr("其中_人工费") + dr("其中_材料费") + dr("其中_机具费") + dr("其中_管理费") Case "基价", "利润" dr("综合单价") = dr("基价") + dr("利润") End Select |
-- 作者:程兴刚 -- 发布时间:2022/5/5 22:39:00 -- 不是这么干的,工程量列呢? |
-- 作者:Phoebe菲比 -- 发布时间:2022/5/5 23:16:00 -- 暂时不需要工程量列,默认工程量列为1 |
-- 作者:Phoebe菲比 -- 发布时间:2022/5/5 23:17:00 -- 请问为什么要把这几个列的变化情况分别写呢? 合在一个语句里不是更简洁吗?
|
-- 作者:有点蓝 -- 发布时间:2022/5/6 8:32:00 -- 写简洁代码那是高手无所事事的情况下做的事。一般人只需要根据实际情况写出符合业务逻辑的代码就够了。再说简洁和解决问题之间也没有什么直接的关系。 a列依赖,b、c、d...等等列进行计算,那么就必须case a、b、c、...等列。但是不同计算依赖的列有重复的,所以需要另外处理,看看:http://www.foxtable.com/webhelp/topics/2242.htm
|