以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]怎样把交叉统计表在窗口中的Table中打开,并指定列名和列宽?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=47379)

--  作者:syczmg
--  发布时间:2014/3/9 13:06:00
--  [求助]怎样把交叉统计表在窗口中的Table中打开,并指定列名和列宽?

设计交叉统计表如下:
Dim g As New CrossTableBuilder("计划执行情况表", DataTables("jh"), "[xmrq] Is Not Null")
g.Caption = "计划执行情况表"
g.HGroups.AddDef("nd")
g.VGroups.AddDef("xmrq", DateGroupEnum.Year, "{0}年")
g.VGroups.AddDef("xmrq", "{0}月")
g.Totals.AddDef("xmbh", AggregateEnum.Count, "项目数量")
g.Totals.AddDef("xmys", "项目预算")
g.HorizontalTotal = True
g.Decimals = 2
g.Filter = "[xmrq] Is Not Null"
g.Build()
MainTable = Tables("计划执行情况表")

执行后,生成临时表与其他数据表在一起。想在计划执行窗口中Table1表打开此表,并指定列名和列宽。请老师指教!


 


--  作者:有点酸
--  发布时间:2014/3/9 23:32:00
--  

1、直接在窗口显示统计结果:

http://www.foxtable.com/help/topics/1909.htm

 

2、设置列宽:

http://www.foxtable.com/help/topics/1775.htm

 


--  作者:syczmg
--  发布时间:2014/3/11 10:44:00
--  

问题部分解决,谢谢老师!问题是:

生成交叉统计代码为:

Dim g As New CrossTableBuilder("计划执行情况表", DataTables("jh"))
g.Caption = "计划执行情况表"
g.HGroups.AddDef("年度")
g.VGroups.AddDef("xmrq", DateGroupEnum.Year, "{0}年")
g.VGroups.AddDef("xmrq", "{0}月")
g.Totals.AddDef("xmbh", AggregateEnum.Count, "项目数量")
g.Totals.AddDef("xmys", "项目预算")
g.HorizontalTotal = True
g.Decimals = 2
Dim Filter As String
With e.Form.Controls("起始日期")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "xmrq >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("截止日期")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "xmrq <= #" & .Value & "#"
    End If
End With
If Filter > "" Then
    Tables("jh").Filter = Filter
End If
g.Filter = Filter
g.Build()
Tables("计划执行_Table1").DataSource = g.BuildDataSource()

 

如何按SetColVisibleWidth(列名1|宽度1|列名2|宽度2|列名3|宽度3...)设置列宽,因为列名不固定(年度、月份均不确定)?


--  作者:Bin
--  发布时间:2014/3/11 10:47:00
--  
循环所有列一个个设置吧.
for each c as col in Tables("计划执行_Table1").cols
    if c.name.Contains("XX") then
        c.width=100
    end if
next