以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=186083)

--  作者:victor_lin33
--  发布时间:2023/4/5 16:01:00
--  [求助]
老师帮我看一下代码哪错了...
需要在打开报表前先勾选指定行... 但打开报表 就都失效只会打开第一笔...

窗口的 打开报表按钮 click 事件:
Dim ds As list(Of Row) = Tables("项目总览表.设计来源档.设计明细档").GetCheckedRows
If ds.count <= 0 Then
    msgbox("没有在Step1勾选要打印的单身序号!!")
    Return
Else
    MessageBox.Show("开启约需5-10秒钟,请勿重覆点击!")
    Tables("项目总览表.设计来源档.设计明细档").DataTable.Load()
End If

For Each r As Row In ds
    Dim Book As New XLS.Book(ProjectPath & "Attachments\\设计下发指导书.xlsx")
    Dim fl As String = ProjectPath & "Reports\\设计下发指导书" & r.index & ".xlsx"
    \'Dim fl As String = ProjectPath & "Reports\\设计下发指导书.xlsx" 
    r.Table.Position = r.Index
    Book.Build() \'生成细节区
    Book.Save(fl) \'保存为PDF文件
    Dim Proc As New Process \'打开PDF文件
    Proc.File = fl
    Proc.Start()
Next




--  作者:victor_lin33
--  发布时间:2023/4/5 16:14:00
--  
另外 资料表中有一列"单号"  要让生成的档案名称直接引用单号 
例: 勾选的行其"单号"为 ZD20230401-01 ,能让打开的报表档案名:  "设计下发指导书ZD20230401-01.xlsx"?

能修正代码实现吗?
--  作者:有点蓝
--  发布时间:2023/4/6 9:00:00
--  
回1楼,execl模板发上来看看

回2楼:Dim fl As String = ProjectPath & "Reports\\设计下发指导书" & r("单号") & ".xlsx"

--  作者:victor_lin33
--  发布时间:2023/4/6 13:36:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:模具更改通知单.xlsx

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:试制策划单.xlsx

蓝老师:
1楼问题参考了论坛上的帖子....已解决!

修正后的代码:
Dim ds As list(Of Row) = Tables("项目总览表.设计来源档.设计明细档").GetCheckedRows
If ds.count <= 0 Then
    msgbox("没有在Step1勾选要打印的单身序号!!")
    Return
Else
    MessageBox.Show("开启约需5 - 10秒钟, 请勿重覆点击!")
 \'Tables("项目总览表.设计来源档.设计明细档").DataTable.Load()
   
For Each r As Row In ds
    Dim Book As New XLS.Book(ProjectPath & "Attachments\\设计下发指导书.xlsx")
    Dim fl As String = ProjectPath & "Reports\\设计下发指导书" & r.index & ".xlsx" 
    r.Table.Position = r.Index
    Book.Build() \'生成细节区
    Book.Save(fl) \'保存文件
    Dim Proc As New Process \'打开F文件
    Proc.File = fl
    Proc.Start()
Next

但仍有点状况 请老师告知如何处里...
1.新增好依比资料 也保存了该行 但勾选该行产生报表前若不保存整个项目...报产生带出来的不是该笔...
>>是不是还没保存就没存到后台(外部数据源)的原因
,我在代码中的何处加上 也没效!
Tables("项目总览表.设计来源档.设计明细档").DataTable.Load()

谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:设计下发指导书.xlsx




--  作者:有点蓝
--  发布时间:2023/4/6 13:55:00
--  
把模板的表名<设计明细档,-1>改为<项目总览表.设计来源档.设计明细档,-1>

--  作者:victor_lin33
--  发布时间:2023/4/7 13:33:00
--  
老师:  还是不行...

我想换个思路...
因为我在资料表下设计了报表模版"设计下发指导.xlxs,也在窗口作业下的按钮引用同一模版(楼上的代码)
我想让不论在 正常菜单下"打印报表"所生成的  和 在窗口作业按钮生成时都用同一模版

这时
我窗口下的tables 是 :项目总览表.设计来源档.设计明细档
是不是只要让在窗口表(项目总览表.设计来源档.设计明细档)  所勾选的选定行 /焦点行 与 设计明细档 保持同步

是不是就能解决
这问题?

如果是我如何修正代码?

谢谢指导!

--  作者:有点蓝
--  发布时间:2023/4/7 13:54:00
--  


For Each r As Row In ds
    Dim Book As New XLS.Book(ProjectPath & "Attachments\\设计下发指导书.xlsx")
    Dim fl As String = ProjectPath & "Reports\\设计下发指导书" & r.index & ".xlsx" 
Dim idx As Integer = Tables("设计明细档").FindRow(r.DataRow)
    Tables("设计明细档").Position = idx 
    Book.Build() \'生成细节区
    Book.Save(fl) \'保存文件
    Dim Proc As New Process \'打开F文件
    Proc.File = fl
    Proc.Start()
Next

--  作者:victor_lin33
--  发布时间:2023/4/7 17:12:00
--  
老师..测了!仍有异常
只产生光标所在的焦点行
1-当勾选行(GetCheckedRows)后 鼠标移开到别行(勾选行 与 焦点行不同时)   
> 当勾选的是单笔   只产生焦点行
> 当勾选的是多笔(2行)   全部产生的档案(2个)都是同一笔...
--  作者:有点蓝
--  发布时间:2023/4/7 17:14:00
--  
请上传实例测试
--  作者:victor_lin33
--  发布时间:2023/4/7 18:57:00
--  
蓝老师  谢谢指导!

已经修正OK
代码如下....

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

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20230407185403.png
图片点击可在新窗口打开查看
Dim ds As list(Of Row) = Tables("项目总览表.设计来源档.设计明细档").GetCheckedRows
If ds.count <= 0 Then
    msgbox("没有在Step1勾选要打印的单身序号!!")
    Return
Else
    MessageBox.Show("开启约需5 - 10秒钟, 请勿重覆点击!")
    DataTables("设计来源档").Save()
    DataTables("设计明细档").Save()
End If

For Each r As Row In ds \'按勾选行index逐行产生一个档案
    Dim Book As New XLS.Book(ProjectPath & "Attachments\\设计下发指导书.xlsx")
    Dim fl As String = "d:\\BPM报表\\" & "下发SOP  " & r("项目名称") & "  " & r("标的壳芯") & "  " & r("来源单号") & ".xlsx" \'每一笔开一档案 指定命名方式 存到指定路径
    r.Table.Position = r.Index
    Book.Build() \'生成细节区
    Book.Save(fl) \'保存文件
    Dim Proc As New Process \'打开文件
    Proc.File = fl
    Proc.Start()
Next

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