以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请问这个合成的表达式有啥问题?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=42011)

--  作者:blackzhu
--  发布时间:2013/11/1 14:40:00
--  请问这个合成的表达式有啥问题?
Dim s_date As new Date(2013,1,31)
Dim e_date As new Date(2013,12,31)
Dim g As New CrossTableBuilder("统计表2",DataTables("十监区管理"))
g.HGroups.AddDef("日期",DateGroupEnum.None)
g.HGroups.AddDef("部门")
g.HGroups.AddDef("报表名称")
g.HGroups.AddDef("组别")
g.HGroups.AddDef("管组民警")
g.HGroups.AddDef("模具规格")
g.HGroups.AddDef("统计类型")
g.VGroups.AddDef("项目")
g.VGroups.AddDef("数据统计项目")
g.Totals.AddDef("数值", "数值")
g.Filter = "日期 >= \'" & s_date & "\' And 日期 <= \'" & e_date & "\'And 部门=\'十五监区\' And 组别=\'砂场二组\'"
g.Build()

If DataTables("统计表2").datarows.Count>0 Then
    Dim 产量_废品 As String  \'产量的废品
    Dim 产量_合格品 As String \'产量的合格品
    Dim 产量_计划 As String   \'产品的计划
    Dim  造型件数_废品率 As String  \'造型的件数  废品率
    Dim 造型件数_废品 As String   \'造型件数  废品
    Dim 造型件数_计划 As String   \'造型件数  废品
    Dim 造型件数_合格 As String \'造型件数  合格品1
    Dim 造型箱数_计划 As String \'造型箱数  计划1
    Dim 造型箱数_完成 As String \'造型箱数  完成
    Dim 造型箱数_计划完成率 As String  \'造型箱数
    Dim 单重_单重 As String  \'造型箱数
    For Each cl As Col In Tables("统计表2").cols
        Select Case cl.Caption
            Case "产量(吨)_废品"
                产量_废品 =cl.Name
            Case "造型件数_计划"
                造型件数_计划 =cl.Name
            Case "产量(吨)_合格品"
                产量_合格品 =cl.Name
            Case "产量(吨)_计划"
                产量_计划 =cl.Name
            Case "造型件数_废品"
                造型件数_废品  =cl.Name
            Case "造型件数_废品"
                造型件数_废品 =cl.Name
            Case "造型件数_合格"
                造型件数_合格 =cl.Name
            Case "造型箱数_计划"
                造型箱数_计划  =cl.Name
            Case "造型箱数_完成"
                造型箱数_完成 =cl.Name
            Case "造型箱数_计划完成率"
                造型箱数_计划完成率 =cl.Name
            Case "单重_单重"
                单重_单重 =cl.Name
        End Select
    Next
    DataTables("统计表2").DataCols(产量_废品).Expression = "(" &  造型件数_废品 & "*" & 单重_单重 & ")/1000"
    Output.Show(1)
    DataTables("统计表2").DataCols(产量_合格品).Expression ="(" & 造型件数_合格 & "*" & 单重_单重 & ")/1000"
    Output.Show(5)
    DataTables("统计表2").DataCols(产量_计划).Expression ="(" & 造型件数_计划 & "*" & 单重_单重 & ")/1000"
    Output.Show(6)
    DataTables("统计表2").DataCols(造型件数_废品率).Expression = "(" & 造型件数_废品 & "/" & "(IsNull([" & 造型件数_合格 & "],0)" & "+" & "(IsNull([" & 造型件数_废品 & "],0)" & "))*100"
    DataTables("统计表2").DataCols(造型箱数_计划完成率).Expression ="(" & 造型箱数_完成 & "/" & 造型箱数_计划 & ")*100"
    Output.Show(8)
   \' Output.Show("(" & 造型件数_废品 & "/" & "(IsNull([" & 造型件数_合格 & "],0)" & "+" & "(IsNull([" & 造型件数_废品 & "],0)" & "))*100")
End If

  红色字部分 一直提示 值不能为空  参数为:key

  
图片点击可在新窗口打开查看此主题相关图片如下:tt截图未命名.bmp
图片点击可在新窗口打开查看

--  作者:Bin
--  发布时间:2013/11/1 14:43:00
--  
把合成后的表达式弹出来看看.
--  作者:blackzhu
--  发布时间:2013/11/1 14:46:00
--  
(数值_5/(IsNull([数值_7],0)+IsNull([数值_5],0)))*100  会有提示

([第一列]/(IsNull([第二列],0)+IsNull([第一列],0)))*100   正常


奇怪  我用其他的表达式合成到 一摸一样以后   也会有提示
[此贴子已经被作者于2013-11-1 14:54:35编辑过]

--  作者:Bin
--  发布时间:2013/11/1 14:47:00
--  
数值_5 这个可能为空吧,你前面的 数值_5 并未做空值判断
--  作者:Bin
--  发布时间:2013/11/1 14:52:00
--  
DataCols(造型件数_废品率).    

你看一下      造型件数_废品率       这个变量是否赋值了

根据你的代码,好像根本就没赋值,空值的

--  作者:blackzhu
--  发布时间:2013/11/1 14:55:00
--  
我看看
--  作者:blackzhu
--  发布时间:2013/11/1 14:57:00
--  
bin  眼神真好