Foxtable(狐表)用户栏目专家坐堂 → [求助]


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

主题:[求助]

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


加好友 发短信
等级:幼狐 帖子:159 积分:1436 威望:0 精华:0 注册:2016/3/24 19:00:00
[求助]  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:159 积分:1436 威望:0 精华:0 注册:2016/3/24 19:00:00
  发帖心情 Post By:2023/4/5 16:14:00 [只看该作者]

另外 资料表中有一列"单号"  要让生成的档案名称直接引用单号 
例: 勾选的行其"单号"为 ZD20230401-01 ,能让打开的报表档案名:  "设计下发指导书ZD20230401-01.xlsx"?

能修正代码实现吗?

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/6 9:00:00 [只看该作者]

回1楼,execl模板发上来看看

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

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


加好友 发短信
等级:幼狐 帖子:159 积分:1436 威望:0 精华:0 注册:2016/3/24 19:00:00
  发帖心情 Post By: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




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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/6 13:55:00 [只看该作者]

把模板的表名<设计明细档,-1>改为<项目总览表.设计来源档.设计明细档,-1>

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


加好友 发短信
等级:幼狐 帖子:159 积分:1436 威望:0 精华:0 注册:2016/3/24 19:00:00
  发帖心情 Post By:2023/4/7 13:33:00 [只看该作者]

老师:  还是不行...

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

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

是不是就能解决
这问题?

如果是我如何修正代码?

谢谢指导!

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


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


加好友 发短信
等级:幼狐 帖子:159 积分:1436 威望:0 精华:0 注册:2016/3/24 19:00:00
  发帖心情 Post By:2023/4/7 17:12:00 [只看该作者]

老师..测了!仍有异常
只产生光标所在的焦点行
1-当勾选行(GetCheckedRows)后 鼠标移开到别行(勾选行 与 焦点行不同时)   
> 当勾选的是单笔   只产生焦点行
> 当勾选的是多笔(2行)   全部产生的档案(2个)都是同一笔...

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/7 17:14:00 [只看该作者]

请上传实例测试

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


加好友 发短信
等级:幼狐 帖子:159 积分:1436 威望:0 精华:0 注册:2016/3/24 19:00:00
  发帖心情 Post By: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
图片点击可在新窗口打开查看


 回到顶部
总数 12 1 2 下一页