以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  不同列怎么求和?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=108421)

--  作者:Engineer1
--  发布时间:2017/10/22 19:30:00
--  不同列怎么求和?
两列,分别是检测费用和维修费用,只有需要维修的时候才填写维修费用,最后统计总费用的时候要把维修费用也加上,我只找到单列求和的代码,这个求教老师了?
--  作者:blsu33
--  发布时间:2017/10/22 19:49:00
--  

空值的判断

按照这个搜索


我们来测试一下,你先在某行输入日期,年、月两列的值确是自动计算得出了,可是如果你删除日期列的内容,按道理年、月列的内容应该为空。
但事实上,年、月都会等于1,原因何在呢?
这是因为在日期列为空的时候,通过行返回的日期值并不是空值,而是等于: #01/01/0001#
同样如果没有输入数量和单价,金额也不会为空,而是等于0,因为数值列为空的时候,其返回的值也不是空值,而是0。

所以为了“完美”,我们将DataColChanged事件代码改为:

Dim dr As DataRow = e.DataRow
Select
Case e.DataCol.Name
    Case "数量","单价","折扣"
       
If dr.IsNull("数量") OrElse dr.IsNull("单价") Then
\'如果数量或单价为空
            dr("金额") = Nothing
        Else

   
        dr("金额") = dr("数量") * dr("单价") * (1 - dr("折扣"))
        End If
    Case "日期"
   
    If dr.IsNull("日期") Then
\'如果日期列为空
            dr("年") = Nothing
            dr("月") = Nothing
        Else

            dr("年") = dr("日期").Year
            dr("月") = dr("日期").Month
        End If
End
Select


--  作者:有点甜
--  发布时间:2017/10/22 20:07:00
--  

方法一:分别单列求和,然后,两个和相加。

 

方法二:多加一列表达式列,合计两列行,最后统计表达式列。