以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]交叉统计后,手工增加列无法求值(如果有空值被求和,直接为空,求不出)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=154710)

--  作者:绿火柴
--  发布时间:2020/9/24 14:31:00
--  [求助]交叉统计后,手工增加列无法求值(如果有空值被求和,直接为空,求不出)
如题: x1,x2,y1,y2 如果有一个空值,那么分母出来的值就是空值. 如何解决.
代码如下:

Dim x1 As String
Dim x2 As String
Dim x7 As String
Dim y1 As String
Dim y2 As String

Dim r1 As DataRow
For Each dc As DataCol In tab.DataTable.DataCols
    If dc.Caption.Contains("磷酸") AndAlso dc.Caption.Contains("广东")  Then
        x1 = dc.Name
    ElseIf dc.Caption.Contains("硫酸") AndAlso dc.Caption.Contains("广东")  Then
        x2 = dc.Name

    ElseIf dc.Caption.Contains("磷酸") AndAlso dc.Caption.Contains("上海")  Then
        y1 = dc.Name
    ElseIf dc.Caption.Contains("硫酸") AndAlso dc.Caption.Contains("上海")  Then
        y2 = dc.Name

    ElseIf dc.Caption.Contains("铝材") Then
        x7 = dc.Name
    End If   
Next
\'上面是交叉统计后得到的表,下面是手工增加的列.
tab.DataTable.DataCols.Add("工厂_铝比磷硫",Gettype(Double),"" & x7 & "/(" & x1 & "+" & x2 & "+" & y1 & "+" & y2 & ")")


--  作者:y2287958
--  发布时间:2020/9/24 14:43:00
--  
判断一下是否为空值
例如:"isnull(" & x1 & ",0)"
[此贴子已经被作者于2020/9/24 14:51:38编辑过]

--  作者:绿火柴
--  发布时间:2020/9/24 14:50:00
--  
新增加的字段,计算公式里是字符形式的,试了,无法做判断
[此贴子已经被作者于2020/9/24 14:50:13编辑过]

--  作者:y2287958
--  发布时间:2020/9/24 14:52:00
--  
例如:"isnull(" & x1 & ",0)"
--  作者:绿火柴
--  发布时间:2020/9/24 14:59:00
--  
搞定, 楼上的方法可行,多谢.