以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- Table中只针对选中栏生成excel报表 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92391) |
-- 作者:benwong2013 -- 发布时间:2016/11/2 14:36:00 -- Table中只针对选中栏生成excel报表 在上图中,比如CTT-WI-F1051-01C表单编号对应的项目有6个,若我现在只选这个表单对应的其中某一个项目打印的话,生成报表还是有包括所有这个6个的,代码如下,请问应该如何修改才能实现,无论这个表单对应多少个项目,生成表单的时候是根据我table复选框中所选的项目才生成(有可能是多个),而不是全部;请问以下的代码应该如何修改? 代码如下: Dim dic As new Dictionary(Of String, String) For Each r As Row In Tables("T_Report.T_Item").GetCheckedRows r("开单状态") = True If dic.ContainsKey(r("表单编号")) = False Then dic.add(r("表单编号"), r("_Identify")) Else dic(r("表单编号")) = dic(r("表单编号")) & "," & r("_Identify") End If Next For Each key As String In dic.Keys Dim Book As New XLS.Book(ProjectPath & "Attachments\\" & key & ".xls") Dim fl As String = ProjectPath & "Reports\\" & Tables("T_Report").current("报告编号")& "&" & key & ".xls" vars("编号") = key book.Sheets(0)(8, 7).Value = "<_Identify in (" & dic(key) & ")>" Book.Build() \'生成细节区 Book.Save(fl) \'保存工作簿 Dim Proc As New Process \'打开工作簿 Proc.File = fl Proc.Start() Next |
-- 作者:有点蓝 -- 发布时间:2016/11/2 15:46:00 -- 这个设置的是明细表的条件,不是主单的条件。 Dim dic As new Dictionary(Of String, String) For Each r As Row In Tables("T_Report.T_Item").GetCheckedRows r("开单状态") = True If dic.ContainsKey(r("表单编号")) = False Then dic.add(r("表单编号"), r("_Identify")) Else dic(r("表单编号")) = dic(r("表单编号")) & "," & r("_Identify") End If Next For Each key As String In dic.Keys Tables("T_Report.T_Item").Filter = "[_Identify] in (" & dic(key) & ")" Dim Book As New XLS.Book(ProjectPath & "Attachments\\" & key & ".xls") Dim fl As String = ProjectPath & "Reports\\" & Tables("T_Report").current("报告编号")& "&" & key & ".xls" vars("编号") = key Book.Build() \'生成细节区 Book.Save(fl) \'保存工作簿 Dim Proc As New Process \'打开工作簿 Proc.File = fl Proc.Start() Next Tables("T_Report.T_Item").Filter = "" |
-- 作者:benwong2013 -- 发布时间:2016/11/3 19:18:00 -- Dim dic As new Dictionary(Of String, String)
If dic.ContainsKey(r("表单编号")) =
False Then
dic.add(r("表单编号"),
r("_Identify"))
Else
dic(r("表单编号")) =
dic(r("表单编号")) & "," &
r("_Identify") End If For Each key
As String In dic.Keys Tables("开单管理_Table1").Filter = "[_Identify] in (" & dic(key) & ")"
Dim Book As New XLS.Book(ProjectPath & "Attachments\\" & key
& ".xls")
Dim fl As String = ProjectPath & "Reports\\" &
Tables("T_Report").current("报告编号")& "&" & key & ".xls"
vars("编号") = key
Book.Build() \'生成细节区 Book.Save(fl) \'保存工作簿
Dim Proc As New Process \'打开工作簿
Proc.File = fl
Proc.Start() Next Tables("开单管理_Table1").Filter = " 报告编号 = ‘" & Tables("T_Report").current("报告编号")& "’” 若我将原来是直接用关联表的话,现在修改为table副本的,发现这个无法实现,还是直接全部打印,若之前直接用关联表的话,可以实现,但打印之后会造成再打开其它报告的时关联的清单全部不出现; |
-- 作者:有点蓝 -- 发布时间:2016/11/3 20:38:00 -- 副本只能动态添加关联了,http://www.foxtable.com/webhelp/scr/1942.htm,记得在窗口关闭前取消关联,不然可能会有问题 报表模板里的表名要改成副本表的名称
|
-- 作者:有点色 -- 发布时间:2016/11/4 9:20:00 -- 这个是小问题,做个实例上来。
1、模板文件,要写副本名<开单管理_Table1>
2、模板的条件,不能设置成 <All>
3、动态设置模板条件 http://www.foxtable.com/webhelp/scr/2626.htm
|