以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]请教一个分级筛选统计的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=127407)

--  作者:tkxffb
--  发布时间:2018/11/13 13:11:00
--  [求助]请教一个分级筛选统计的问题
Dim zzrs As New GroupTableBuilder("在职人员人数统计表1", DataTables("在职人员信息表"))
zzrs.Groups.AddDef("现任职务")
zzrs.Filter = "县市 Like \'%" & e.form.controls("ComboBox1").text & "%\'" 
zzrs.Filter =  "乡镇 Like \'%" & e.form.controls("ComboBox2").text & "%\'"
zzrs.Totals.AddDef("姓名", AggregateEnum.Count,"现有人数",True)  \'--统计姓名列行数,填充到临时表现有人数列
zzrs.Subtotal = True
zzrs.Build()

各位老师,上段代码是写在统计窗口的一个按钮下的,这段代码可以在先选择县市、再选择乡镇之后对选定的乡镇人员进行统计,现在我想要在只选择县市、不选择乡镇的情况下统计所选择县市的人员,这个目的可以实现吗?该怎么修改上面的代码?请赐教,谢谢!
[此贴子已经被作者于2018/11/13 13:11:53编辑过]

--  作者:有点甜
--  发布时间:2018/11/13 14:45:00
--  
1、看看
 
 
2、
 
Dim filter As String = "1=1"
If e.form.controls("ComboBox1").text <> Nothing Then
    filter &= " and 县市 Like \'%" & e.form.controls("ComboBox1").text & "%\'"
End If
If e.form.controls("ComboBox2").text <> Nothing Then
    filter &= " and 乡镇 Like \'%" & e.form.controls("ComboBox2").text & "%\'"
End If
Dim zzrs As New GroupTableBuilder("在职人员人数统计表1", DataTables("在职人员信息表"))
zzrs.Groups.AddDef("现任职务")
zzrs.Filter = filter
zzrs.Totals.AddDef("姓名", AggregateEnum.Count,"现有人数",True)  \'--统计姓名列行数,填充到临时表现有人数列
zzrs.Subtotal = True
zzrs.Build()

--  作者:tkxffb
--  发布时间:2018/11/13 15:03:00
--  
感谢有点甜老师的指导,甜老师的指导总是很到位、很耐心图片点击可在新窗口打开查看

刚才我也试验了一个方法,代码如下,也能实现目的,但不知道代码是否合理,请你再看看

Dim zzrs As New GroupTableBuilder("在职人员人数统计表1", DataTables("在职人员信息表"))

If e.Form.Controls("combobox2").Value = Nothing Then
    zzrs.Groups.AddDef("现任职务")
    zzrs.Filter = "县市 Like \'%" & e.form.controls("ComboBox1").text & "%\'"
    zzrs.Totals.AddDef("姓名", AggregateEnum.Count,"现有人数",True)  \'--统计姓名列列数,填充到临时表现有人数列
    zzrs.Subtotal = True
    zzrs.Build()
Else
    zzrs.Groups.AddDef("现任职务")
    zzrs.Filter =  "乡镇 Like \'%" & e.form.controls("ComboBox2").text & "%\'"
    zzrs.Totals.AddDef("姓名", AggregateEnum.Count,"现有人数",True)  \'--统计姓名列列数,填充到临时表现有人数列
    zzrs.Subtotal = True
    zzrs.Build()
End If

--  作者:有点甜
--  发布时间:2018/11/13 15:22:00
--  
尽量用2楼的方法,不然,有一些小问题你没有考虑进去。
--  作者:tkxffb
--  发布时间:2018/11/13 15:27:00
--  
好的,谢谢老师