以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]统计问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=57069)

--  作者:utcxray
--  发布时间:2014/9/17 16:15:00
--  [求助]统计问题

shangwu_日期筛选_ColList_ChangeCommitted

 

Dim ColName As String = e.ComboBox.Text \'获得组合框的内容

With CurrentTable

    If .Cols.Contains(ColName) Then \'如果当前表包括输入名称的列

        .Select(.RowSel, .Cols(ColName).Index) \'那么选择该列.

    End If

End With

 

shangwu_日期筛选_ColList1_ChangeCommitted

 

Dim ColName As String = e.ComboBox.Text \'获得组合框的内容

With CurrentTable

    If .Cols.Contains(ColName) Then \'如果当前表包括输入名称的列

        .Select(.RowSel, .Cols(ColName).Index) \'那么选择该列.

    End If

End With

 

shangwu_日期筛选_出库月报_Click

 

Forms("任意统计窗口").Open()

Dim HGroup As String

Dim VGroup As String

Dim TotalOn As String

Dim t As Table = CurrentTable

\'获取输入内容

With RibbonTabs("shangwu")("日期筛选")

    HGroup = .Items("ColList").Text

    VGroup = .Items("ColList1").Text

    TotalOn = .Items("TotalOn").Text

End With

With t.Cols

    If HGroup >"" AndAlso .Contains(HGroup) Then \'如果已经输入有效水平分组

        If VGroup >"" AndAlso .Contains(VGroup) Then \'如果已经输入有效垂直分组

            If TotalOn >"" AndAlso .Contains(TotalOn) Then \'而且统计列有效

                Dim b As New CrossTableBuilder("统计表","t")

                b.HGroups.AddDef(HGroup) \'添加水平分组

                b.VGroups.AddDef(VGroup) \'添加垂直分组

                b.Totals.AddDef(TotalOn) \'添加统计列

                b.Build \'生成统计表

                Tables("任意统计窗口_Table12").DataSource = b.BuildDataSource()

            End If

        End If

    End If

End With


此主题相关图片如下:无标题1.jpg
按此在新窗口浏览图片


目的:想根据当前表选定列生成统计表,代码如上,实际执行过程如图,没显示。请高手指点


--  作者:utcxray
--  发布时间:2014/9/17 16:17:00
--  
现在水平组、垂直组、统计列及日期都能正常显示,就是报表生成的没显示
--  作者:utcxray
--  发布时间:2014/9/17 16:18:00
--  
现在水平组、垂直组、统计列及日期都能正常显示,就是报表生成的没显示
图片点击可在新窗口打开查看此主题相关图片如下:无标题1.jpg
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2014/9/17 16:21:00
--  
 你msgbox(t.Name)看看,有可能窗口打开之后,currentTable就被改变了,建议用一个变量存储要生成的表t
[此贴子已经被作者于2014-9-17 16:21:24编辑过]

--  作者:utcxray
--  发布时间:2014/9/17 17:16:00
--  

Dim HGroup As String

Dim VGroup As String

Dim TotalOn As String

Dim t As Table = CurrentTable

\'获取输入内容

With RibbonTabs("shangwu")("日期筛选")

    HGroup = .Items("ColList").Text

    VGroup = .Items("ColList1").Text

    TotalOn = .Items("TotalOn").Text

End With

With t.Cols

    If HGroup >"" AndAlso .Contains(HGroup) Then \'如果已经输入有效水平分组

        If VGroup >"" AndAlso .Contains(VGroup) Then \'如果已经输入有效垂直分组

            If TotalOn >"" AndAlso .Contains(TotalOn) Then \'而且统计列有效

                Dim b As New CrossTableBuilder("统计表","t")

                b.HGroups.AddDef(HGroup) \'添加水平分组

                b.VGroups.AddDef(VGroup) \'添加垂直分组

                b.Totals.AddDef(TotalOn) \'添加统计列

                ‘b.Build \'生成统计表

msgbox(t.Name)

Forms("任意统计窗口").Open()

                Tables("任意统计窗口_Table12").DataSource = b.BuildDataSource()

            End If

        End If

    End If

End With


msgbox(t.Name)名称没问题,t显示的是当前表的名称。


--  作者:有点甜
--  发布时间:2014/9/17 17:31:00
--  

 那这句你要改

 

Dim b As New CrossTableBuilder("统计表", t.DataTable)


--  作者:utcxray
--  发布时间:2014/9/17 17:36:00
--  
                Dim b As New CrossTableBuilder("统计表","t")
 msgbox(HGroup)-------此行正确显示了水平分组
                b.HGroups.AddDef(HGroup) \'添加水平分组
                b.VGroups.AddDef(VGroup) \'添加垂直分组
                b.Totals.AddDef(TotalOn) \'添加统计列
  msgbox(t.Name)---------此行正确显示了当前表的名称

                b.Build \'生成统计表------此行有问题

看来问题出在 Forms("任意统计窗口").Open()
                 Tables("任意统计窗口_Table2").DataSource = b.BuildDataSource()上。
不会调试了,
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20140917173050.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2014/9/17 17:44:00
--  

 我跟你说了,要这样子写,不能用 "t"

 

Dim b As New CrossTableBuilder("统计表", t.DataTable)


--  作者:utcxray
--  发布时间:2014/9/17 17:51:00
--  

 那这句你要改

 

Dim b As New CrossTableBuilder("统计表", t.DataTable)


这句代码正常了,能正常显示了。


msgbox(t.DataTable.Name)和msgbox(t.Name)显示的都是同一名称,为什么Dim b As New CrossTableBuilder("统计表", t.DataTable)就能正常, Dim b As New CrossTableBuilder("统计表","t")不行,求解释


--  作者:有点甜
--  发布时间:2014/9/17 17:54:00
--  

 没有这种用法,"t",变量t不能用双引号包裹

 

Dim b As New CrossTableBuilder("统计表","t")