以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]基于模板,生成过滤条件之后的表  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=78715)

--  作者:chnfo
--  发布时间:2015/12/15 16:23:00
--  [求助]基于模板,生成过滤条件之后的表
基于模板,生成报表。

在窗口中左边有一棵树,有一个表,还有一个生成报表的按钮。
点击左边的树节点,右边的表只显示符合条件的数据。

比如说整个表有100行,但通过左边树节点的过滤,界面上只显示了30行。但点成生报表的按钮,还是100行。
除非将鼠标在表中的任何一个单元格点击一下,再点生成报表按钮,才在EXCEL表中生成30行。
生成报表的按钮代码如下:

Dim TV As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim nd As WinForm.TreeNode = TV.SelectedNode
Dim tbl As Table = e.Form.Controls("Table1").Table

Select Case nd.Level
    Case 1
        tbl.Filter = "A = \'" & nd.Text & "\'"
        If tbl.Rows.Count > 0 Then
            Dim Book As New XLS.Book(ProjectPath & "Attachments\\AAA.xls") \'打开模板
            Dim Sheet As XLS.Sheet = Book.Sheets(0)
            
            Book.Build() \'生成细节区
            Book.Save("c:\\reports\\test.xls") \'保存工作簿
            Dim Proc As New Process \'打开工作簿
            Proc.File = "c:\\reports\\test.xls"
            Proc.Start()
        End If
End Select

请教,问题在哪里呢?

--  作者:大红袍
--  发布时间:2015/12/15 16:28:00
--  

你AAA.xls里设置的模板的表名是什么?直接写表名的筛选

 

Tables("表a").Filter = "A = \'" & nd.Text & "\'"


--  作者:chnfo
--  发布时间:2015/12/15 16:56:00
--  
AAA模板没有设置表名。
窗口表是normal,绑定表A,设置为副本。

为什么用
tbl.Filter = "A = \'" & nd.Text & "\'”  就不行
Tables("表a").Filter = "A = \'" & nd.Text & "\'"  就可以呢?

或者每一次点生成报表按钮之前,鼠标去点一下tbl的任意单元格又可以呢?

--  作者:大红袍
--  发布时间:2015/12/15 17:05:00
--  

你模板的是表A,但是你窗口的有可能不是表A,而是副本表,表名不同,自然导出的结果不同。

 

以模板的表名为准。