以文本方式查看主题 - 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 --
蓝老师: 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() 谢谢!
|
||||||||||||
-- 作者:有点蓝 -- 发布时间: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
|