以文本方式查看主题

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

--  作者:martin723
--  发布时间:2020/12/11 14:09:00
--  [求助]Excel报表打印问题
两张关联表打印一套Excel报表。每条父表数据生成一个Excel表,其中子表数据需要进行筛选。用代码生成。
结果出现子表的数据没有筛选过。但使用键盘鼠标换行打印Excel报表生成的Excel文件是筛选过的。正确代码是怎么写的?
Dim Filter As String
Filter = "JYSJ >= #" & dt1 & "# And JYSJ <= #" & dt2 & "#"
MainTable = Tables("CLXX")
Tables("CLXX.JYJL").Filter = Filter
Dim sheet1 As XLS.Sheet
Dim f1,f2 As String
f1=ProjectPath & "\\temp.xls"
f2=SpecialFolder.DesktopDirectory & "\\单车加油-" & Jysxn & Jysxy  & ".xls"
Dim Book2 As New XLS.Book
For i As Integer = 0 To CurrentTable.Rows.Count -1
    CurrentTable.Position = i
    System.Threading.Thread.Sleep(1000)
    Dim Book1 As New XLS.Book(ProjectPath & "Attachments\\单车加油模板.xls")
    Book1.Build() \'生成细节区
    Sheet1 = Book1.Sheets("muban")
    sheet1.Name = CurrentTable.Current("CH")
    System.Threading.Thread.Sleep(1000)
    Book1.Save(f1) \'保存工作簿
    Book1.Sheets.Remove(Sheet1)
    Book2.Sheets.Add(Sheet1)
    System.Threading.Thread.Sleep(500)
Next
正确的写法是什么?

--  作者:有点蓝
--  发布时间:2020/12/11 14:37:00
--  
首先不是特别情况不要使用CurrentTable这种用法,最好是指定表。

Dim Filter As String
Filter = "JYSJ >= #" & dt1 & "# And JYSJ <= #" & dt2 & "#"
MainTable = Tables("CLXX")

Dim sheet1 As XLS.Sheet
Dim f1,f2 As String
f1=ProjectPath & "\\temp.xls"
f2=SpecialFolder.DesktopDirectory & "\\单车加油-" & Jysxn & Jysxy  & ".xls"
Dim Book2 As New XLS.Book
For i As Integer = 0 To Tables("CLXX").Rows.Count -1
    Tables("CLXX").Position = i
Tables("CLXX.JYJL").Filter = Filter
    Dim Book1 As New XLS.Book(ProjectPath & "Attachments\\单车加油模板.xls")
    Book1.Build() \'生成细节区
    Sheet1 = Book1.Sheets("muban")
    sheet1.Name = Tables("CLXX").Current("CH")
    Book1.Save(f1) \'保存工作簿
    Book1.Sheets.Remove(Sheet1)
    Book2.Sheets.Add(Sheet1)
Next


--  作者:martin723
--  发布时间:2020/12/11 14:52:00
--  
这样速度快了,但子表筛选还是出现问题,屏幕上确实筛选了,但打印出的Excel报表中仍有不是筛选范围的数据,怎么回事?移动键盘鼠标逐条打印就没有问题
--  作者:有点蓝
--  发布时间:2020/12/11 14:55:00
--  
嗯,execl报表关联表和筛选没有关系的,需要移除掉才行,或者子表只加载有关的数据
--  作者:martin723
--  发布时间:2020/12/11 15:05:00
--  
但是键盘鼠标操作生成的没有问题啊!两者不一致,能模拟键盘鼠标操作点击报表按钮吗
--  作者:有点蓝
--  发布时间:2020/12/11 15:14:00
--  
搞不懂了。您是需要筛选还是不需要筛选?
--  作者:martin723
--  发布时间:2020/12/11 15:27:00
--  
需要筛选,屏幕上已经筛选出正确结果了。但用代码出问题(未进行筛选,与屏幕不一致),逐行用点击菜单的方式没问题(与屏幕一致,有筛选)。
[此贴子已经被作者于2020/12/11 15:27:39编辑过]

--  作者:有点蓝
--  发布时间:2020/12/11 15:49:00
--  
关联表的筛选对模板里子表的数据输出不可能起作用的。请上传实例说明