Foxtable(狐表)用户栏目专家坐堂 → Table中只针对选中栏生成excel报表


  共有2496人关注过本帖树形打印复制链接

主题:Table中只针对选中栏生成excel报表

帅哥哟,离线,有人找我吗?
benwong2013
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:4081 威望:0 精华:0 注册:2015/12/16 8:22:00
Table中只针对选中栏生成excel报表  发帖心情 Post By:2016/11/2 14:36:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下: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




 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:485 积分:4081 威望:0 精华:0 注册:2015/12/16 8:22:00
  发帖心情 Post By: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副本的,发现这个无法实现,还是直接全部打印,若之前直接用关联表的话,可以实现,但打印之后会造成再打开其它报告的时关联的清单全部不出现;


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/11/3 20:38:00 [只看该作者]

副本只能动态添加关联了,http://www.foxtable.com/webhelp/scr/1942.htm,记得在窗口关闭前取消关联,不然可能会有问题

报表模板里的表名要改成副本表的名称

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/11/4 9:20:00 [只看该作者]

 这个是小问题,做个实例上来。

 

 1、模板文件,要写副本名<开单管理_Table1>

 

 2、模板的条件,不能设置成 <All>

 

 3、动态设置模板条件 http://www.foxtable.com/webhelp/scr/2626.htm

 


 回到顶部