Foxtable(狐表)用户栏目专家坐堂 → [求助]存在空值时,无法汇总


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

主题:[求助]存在空值时,无法汇总

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


加好友 发短信
等级:三尾狐 帖子:622 积分:5303 威望:0 精华:0 注册:2022/4/4 14:42:00
[求助]存在空值时,无法汇总  发帖心情 Post By:2022/5/19 8:59:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
描述,汇总表是根据明细表中的 类别 、名称、规格型号、单位、不含税单价进行汇总的,但是,当明细表中,存在空值的单元格时,就会出现无法汇总的情况
求解决方案
图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看
代码如下:


Dim arys As List(of String())
arys = DataTables("人材机明细").GetValues("类别|名称|规格型号|单位|不含税单价")
Dim n_count As Integer = arys.Count

Tables("材料汇总表").AddNew(n_count)
Dim In_row As DataRow
Dim I As Integer = 0
For Each ary As String() In arys
    in_row = DataTables("材料汇总表").DataRows(i)
    In_row("类别")    =   ary(0)
    In_row("名称")     =  ary(1)
    In_row("规格型号")    =  ary(2)
    In_row("单位")     =  ary(3)
    Dim price_string As String = ary(4)
    Dim price As Double
    If price_string = "" Then
        price = 0
    Else
        price = CDbl(price_string)
    End If
    In_row("不含税单价")     =  price
    In_row("净用量") =  DataTables("人材机明细").Compute("sum(净用量)","类别 = '"& ary(0) &"' and 名称 = '"& ary(1) &"' and 规格型号 = '"& ary(2) &"'  and 不含税单价 = '"& price &"'   ")
    In_row("实际用量") =  DataTables("人材机明细").Compute("sum(实际用量)","类别 = '"& ary(0) &"' and 名称 = '"& ary(1) &"' and 规格型号 = '"& ary(2) &"'  and 不含税单价 = '"& price &"'   ")
    Dim drs As List (of DataRow) = DataTables("人材机明细").Select("类别 = '"& ary(0) &"' and 名称 = '"& ary(1) &"' and 规格型号 = '"& ary(2) &"'  and 不含税单价 = '"& price &"'   ")
      
    
    i = i + 1
Next

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/19 9:06:00 [只看该作者]

if ary(2) > "" then
In_row("净用量") =  DataTables("人材机明细").Compute("sum(净用量)","类别 = '"& ary(0) &"' and 名称 = '"& ary(1) &"' and 规格型号 = '"& ary(2) &"'  and 不含税单价 = '"& price &"'   ")
    In_row("实际用量") =  DataTables("人材机明细").Compute("sum(实际用量)","类别 = '"& ary(0) &"' and 名称 = '"& ary(1) &"' and 规格型号 = '"& ary(2) &"'  and 不含税单价 = '"& price &"'   ")
else
In_row("净用量") =  DataTables("人材机明细").Compute("sum(净用量)","类别 = '"& ary(0) &"' and 名称 = '"& ary(1) &"' and 规格型号 is null  and 不含税单价 = '"& price &"'   ")
    In_row("实际用量") =  DataTables("人材机明细").Compute("sum(实际用量)","类别 = '"& ary(0) &"' and 名称 = '"& ary(1) &"' and 规格型号  is null  and 不含税单价 = '"& price &"'   ")
end if

如果【类别|名称|规格型号|单位|不含税单价】这些列都可能有空值,那就非常麻烦了。要做很多的判断。如果是这种情况个人的建议是不要有空值,使用“无规格型号”这种值来替代空值

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


加好友 发短信
等级:三尾狐 帖子:622 积分:5303 威望:0 精华:0 注册:2022/4/4 14:42:00
  发帖心情 Post By:2022/5/19 9:11:00 [只看该作者]

谢谢

 回到顶部