以文本方式查看主题

-  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=154611)

--  作者:绿火柴
--  发布时间:2020/9/20 12:54:00
--  [求助]交叉统计不显示数据(手工编写,如果某条件列有空值则统计数据也为空)
如题:
交叉统计不显示数据(手工编写,如果某条件列有空值,则对应的行统计数据也显示为空)
比如,用气明细  表中,类别列里,个别行字段为空值,则在 气量统计 表中,统计各日期下的数据都为空.....同样方式在EXCEL透视表中,是可以显示数据的.
代码如下:
        Dim dtb As New DataTableBuilder("气量统计")
        dtb.AddDef("排序", Gettype(String), 50)
        dtb.AddDef("位置", Gettype(String), 50)
        dtb.AddDef("回路名称", Gettype(String), 50)
        dtb.AddDef("类别", Gettype(String), 50)
        \'dtb.AddDef("合并字符",Gettype(String),100)
        Dim prds As List(of String) = DataTables("用气明细").GetValues("日期")
        For Each prd As Date In prds
            dtb.AddDef(prd, Gettype(Double))
        Next
        dtb.Build()
        For Each cus() As String In dt.GetValues("排序|位置|回路名称|类别")
            Dim dtbr As DataRow = DataTables("气量统计").AddNew()
            dtbr("排序") = cus(0)
            dtbr("位置") = cus(1)
            dtbr("回路名称") = cus(2)
            dtbr("类别") = cus(3)
            \'dtbr("合并字符") = cus(0) & cus(1) & cus(2) & cus(3)
            For Each prd As Date In prds
                dtbr(prd) = dt.Compute("Sum(实际用气量)","排序 = \'" & cus(0) & "\'and  位置 = \'" & cus(1) & "\' and 回路名称 = \'" & cus(2) & "\' and 类别 =\'" & cus(3) & "\' And [日期] = \'" & prd.Date & "\'")
            Next
        Next
        MainTable = Tables("气量统计")

--  作者:有点蓝
--  发布时间:2020/9/20 21:03:00
--  
        dtb.Build()
dim filter as string 
        For Each cus() As String In dt.GetValues("排序|位置|回路名称|类别")
            Dim dtbr As DataRow = DataTables("气量统计").AddNew()
            dtbr("排序") = cus(0)
            dtbr("位置") = cus(1)
            dtbr("回路名称") = cus(2)
            dtbr("类别") = cus(3)
            \'dtbr("合并字符") = cus(0) & cus(1) & cus(2) & cus(3)
filter = "排序 = \'" & cus(0) & "\'and  位置 = \'" & cus(1) & "\' and 回路名称 = \'" & cus(2) & "\' and 类别 " & IIF(cus(3) > ""," = \'" & cus(3) & ""\'," is null")
            For Each prd As Date In prds
filter  = filter & " and [日期] = \'" & prd.Date & "\'"
                dtbr(prd) = dt.Compute("Sum(实际用气量)",filter  )
            Next
        Next
        MainTable = Tables("气量统计")

--  作者:客人
--  发布时间:2020/9/21 8:40:00
--  
多谢蓝版本,,,已经解决.思路挺好的.

有两处小错误,自己调整好了.