以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  已加载表中计算有空值时sum出错  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102433)

--  作者:HappyFt
--  发布时间:2017/6/19 21:23:00
--  已加载表中计算有空值时sum出错
有如下的代码,在加载的表中用compute求和
dr("累计生产") = e.DataTable.Compute("isnull(Sum(合格数量),0) + isnull(Sum(不良数量),0) + isnull(Sum(报废数量),0)","生产单号 = \'" & e.DataRow("生产单号") & "\' and 产品编码 = \'" & e.DataRow("产品编码") & "\' and 工序号 = " & e.DataRow("工序号"))
        
上面如果不加isnull的话,合格数量,不良数量,报废数量 三列中有一列值为空时就不会计算,sum(isnull(合格数量),0))也会提示出错,
这种情况compute时sum求和时如果为空就按0计算要怎么写才可以?

谢谢!

--  作者:有点蓝
--  发布时间:2017/6/19 21:41:00
--  
e.DataTable.sqlCompute("isnull(Sum(合格数量),0) + isnull(Sum(不良数量),0) + isnull(Sum(报废数量),0)","生产单号 = \'" & e.DataRow("生产单号") & "\' and 产品编码 = \'" & e.DataRow("产品编码") & "\' and 工序号 = " & e.DataRow("工序号"))
--  作者:HappyFt
--  发布时间:2017/6/19 21:52:00
--  
sqlcompute因为事先没有加载表结构不适合,项目的窗口都是sqltable fill数据进来的.另外因为合格数量,不良数量,报废数量是新增时没有填写值导致不计算,如果保存过一次的sql数据库中默认值是设为0的,就没有这个问题,是不是只能在窗口打开时设置一下默认值为0  类似这样Tables(e.Form.name & "_明细").Cols("合格数量").DataCol.DefaultValue = """0"""
foxtable中前台数据计算时有没有如果没填写值就按0计算的写法?

--  作者:有点蓝
--  发布时间:2017/6/19 22:14:00
--  
Dim filter As String = "生产单号 = \'" & e.DataRow("生产单号") & "\' and 产品编码 = \'" & e.DataRow("产品编码") & "\' and 工序号 = " & e.DataRow("工序号")

Dim v  = e.DataTable.sqlCompute("Sum(合格数量)",filter) + e.DataTable.sqlCompute("Sum(不良数量)",filter) + e.DataTable.sqlCompute("Sum(报废数量)",filter)