以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 报表锁定 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=152614)
|
-- 作者:qaz17909
-- 发布时间:2020/7/16 14:32:00
-- 报表锁定
此主题相关图片如下:微信图片_20200716142941.png
生成word或excel报表的时候,如果打开着其他word或者excel,便会提示文档被锁定,应如何改进,另外希望生成的文档自动最大化显示。
|
-- 作者:有点蓝
-- 发布时间:2020/7/16 15:04:00
--
只能先关闭已经打开的报表,或者使用代码强制关闭:
Dim ps As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcesses() For Each p As System.Diagnostics.Process In ps output.show(p.processName) If ("Excel" = p.ProcessName) msgbox(p.MainWindowTitle) \'p.kill End If Next
|
-- 作者:qaz17909
-- 发布时间:2020/7/16 15:14:00
--
真的没有其他变通的办法了吗?有的时候,必须要同时打开其他文档。
|
-- 作者:有点蓝
-- 发布时间:2020/7/16 15:34:00
--
正常打开其它文档不应该会影响要生成的报表。肯定是打开了同名的报表。比如1.docx已经被打开,再生成的报表名称肯定不能是1.docx。如果打开的是2.docx,不可能会影响生成1.docx这个名称的报表的。
|
-- 作者:qaz17909
-- 发布时间:2020/7/16 15:38:00
--
打开不同名的报表,也是会报错的,你可以试试,随便打开一个其他word文档,然后再生成报表。
|
-- 作者:有点蓝
-- 发布时间:2020/7/16 15:43:00
--
Dim t As Table = CurrentTable Dim tm As String = ProjectPath & "Attachments\\1.docx" \'指定模板文件 Dim fl As String = ProjectPath & "Reports\\1.docx" Dim wrt As New WordReport(t,tm,fl) \'定义一个WordReport wrt.RecordsOnEachPage = 1 wrt.Build() wrt.show() 去掉下面代码,wrt.show()就已经打开报表了,不需要Process,下面就相当于重复打开,肯定就冲突了 \'Dim Proc As New Process \'定义一个新的Process \'Proc.File = fl \'指定要打开的文件 \'Proc.Start()
|
-- 作者:qaz17909
-- 发布时间:2020/7/16 15:51:00
--
可以同时打开,但是最大化显示没能实现,我代码如下: Dim t As Table = CurrentTable Dim tm As String = ProjectPath & "Attachments\\1.docx" \'指定模板文件 Dim fl As String = ProjectPath & "Reports\\1.docx" Dim wrt As New WordReport(t,tm,fl) \'定义一个WordReport wrt.RecordsOnEachPage = 1 wrt.Build() wrt.show() ShowAppWindow(fl,2)
|
-- 作者:有点蓝
-- 发布时间:2020/7/16 16:25:00
--
语法: ShowAppWindow(Caption, State) - Caption
字符型,查找窗口标题包括的字符。 - State
整数型,指定窗口状态。 1:正常大小显示 2:最大化显示 3:最小化 4:隐藏 5、关闭
如果找到指定标题的窗口,在完成指定操作后,会返回True,否则返回False。 示例一 假定用Excel打开了一个名为"订单.xls"的文件,希望最大化显示此窗口: ShowAppWindow("订单.xls",2) 如果你要关闭这个窗口,只需: ShowAppWindow("订单.xls",5)
|