Foxtable(狐表)用户栏目专家坐堂 → 已加载表中计算有空值时sum出错


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

主题:已加载表中计算有空值时sum出错

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


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
已加载表中计算有空值时sum出错  发帖心情 Post By:2017/6/19 21:23:00 [只看该作者]

有如下的代码,在加载的表中用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计算要怎么写才可以?

谢谢!

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17558 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2017/6/19 21:52:00 [只看该作者]

sqlcompute因为事先没有加载表结构不适合,项目的窗口都是sqltable fill数据进来的.另外因为合格数量,不良数量,报废数量是新增时没有填写值导致不计算,如果保存过一次的sql数据库中默认值是设为0的,就没有这个问题,是不是只能在窗口打开时设置一下默认值为0  类似这样Tables(e.Form.name & "_明细").Cols("合格数量").DataCol.DefaultValue = """0"""
foxtable中前台数据计算时有没有如果没填写值就按0计算的写法?

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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) 

 回到顶部