以文本方式查看主题

-  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报表

图片点击可在新窗口打开查看此主题相关图片如下:56.png
图片点击可在新窗口打开查看

在上图中,比如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