以文本方式查看主题

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

--  作者:lesliecheung912
--  发布时间:2014/7/2 11:26:00
--  [求助]交叉表统计
代码如下:
Dim g As New SQLCrossTableBuilder("最高学历", "员工档案表")
g.C
g.HGroups.AddDef("部门体系")
g.HGroups.AddDef("工作部门")
g.HGroups.AddDef("办事处")
g.VGroups.AddDef("最高学历")
g.Totals.AddDef("员工编号", AggregateEnum.Count, "员工编号")
g.VerticalTotal= True \'垂直汇总
g.HorizontalTotal = True \'水平汇总
\'g.Build()
If e.Form.Controls("部门体系").Value > "" AndAlso e.Form.Controls("工作部门").Value > "" AndAlso e.Form.Controls("办事处").Value > ""   Then
    g.Filter = "部门体系 = \'" & e.Form.Controls("部门体系").Value & "\' And 工作部门 = \'" & e.Form.Controls("工作部门").Value & "\' And 办事处 = \'" & e.Form.Controls("办事处").Value & "\'"
ElseIf e.Form.Controls("部门体系").Value > "" AndAlso e.Form.Controls("工作部门").Value > "" AndAlso e.Form.Controls("办事处").Value = "" Then
    g.Filter = "部门体系 = \'" & e.Form.Controls("部门体系").Value & "\' And 工作部门 = \'" & e.Form.Controls("工作部门").Value & "\'"
Else e.Form.Controls("部门体系").Value > "" AndAlso e.Form.Controls("工作部门").Value = "" AndAlso e.Form.Controls("办事处").Value = "" Then
    g.Filter = "部门体系 = \'" & e.Form.Controls("部门体系").Value & "\'"
End If
Tables("员工统计_Table1").DataSource = g.BuildDataSource
MainTable = Tables("员工统计_Table1")
MainTable.Font = New Font("宋体",10,FontStyle.Regular)
Tables("员工统计_Table1").AutoSizeCols()
如果某办事处的本科学历的人数为0时,在表中显示的是空值,现在不想让它出现空值,如果是空值的话就让它的值为0,这应该如何控制呢?

--  作者:Bin
--  发布时间:2014/7/2 11:29:00
--  
最后加上 Tables("员工统计_Table1").datatable.ReplaceFor("办事处",Nothing,0)


--  作者:有点甜
--  发布时间:2014/7/2 11:34:00
--  
For Each c As Col In Tables("员工统计_Table1").Cols
    Tables("员工统计_Table1").DataTable.ReplaceFor(c.Name, Nothing, 0)
Next

--  作者:lesliecheung912
--  发布时间:2014/7/2 11:43:00
--  
这句放到最后就可以吗?为啥报以下错误:
筛选表达式“0”的计算结果不是布尔值项。

--  作者:有点甜
--  发布时间:2014/7/2 11:45:00
--  

改一下

 

For Each c As Col In Tables("员工统计_Table1").Cols
    If c.IsNumeric OrElse c.IsString Then
        Tables("员工统计_Table1").DataTable.ReplaceFor(c.Name, Nothing, 0)
    End If
Next


--  作者:Bin
--  发布时间:2014/7/2 11:46:00
--  
只是设置某一列用2楼的代码可以了

所有列都要处理的话

用3楼的改进一下


For Each c As Col In Tables("员工统计_Table1").Cols
    If c.IsNumeric Then
        Tables("员工统计_Table1").DataTable.ReplaceFor(c.Name, Nothing, 0)
    End If
Next

--  作者:lesliecheung912
--  发布时间:2014/7/2 11:53:00
--  
不管用啊,还是报那个错误
--  作者:有点甜
--  发布时间:2014/7/2 11:56:00
--  

 哦,写错了

 

For Each c As Col In Tables("员工统计_Table1").Cols
    If c.IsNumeric OrElse c.IsString Then
        Tables("员工统计_Table1").DataTable.ReplaceFor(c.Name, 0, c.name & " is null")
    End If
Next