以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]保存報表時如何不彈出[正在保存...]的窗口?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=68812)

--  作者:don
--  发布时间:2015/5/25 16:31:00
--  [求助]保存報表時如何不彈出[正在保存...]的窗口?
請教:

Dim doc As New PrintDoc \'定义一个报表
Dim rt As New prt.RenderText \'定义一个文本对象
rt.Text = "Hello Foxtable" \'设置文本对象的内容
doc.Body.Children.Add(rt) \'将文本对象加入到报表

doc.SavePDF("C:\\aa\\Test.PDF")       \'保存報表時如何不彈出[正在保存...]的窗口?

--  作者:Bin
--  发布时间:2015/5/25 16:36:00
--  
自带函数,无法修改. 做不到呢
--  作者:don
--  发布时间:2015/5/25 16:44:00
--  
這個彈出的窗口老大應該可以控制吧?!

90多行的數據>>>>生成PDF文件>>>>發送電郵---(差不多5分鐘無法動彈!,不斷彈出的又自行關閉的窗口占用大量時間)

--  作者:大红袍
--  发布时间:2015/5/25 17:12:00
--  

呃,测试了一下,暂时做不到。

 

1、doc不能多线程运行,也就是它在生成的工程中,是一定不能再做其它的操作的;不过发电邮,可以做异步发送。

 

2、如果确实很慢,你可以换一种思路,弄成短信猫的思路,单独用一台机器处理生成数据和发送电邮的功能。

 

3、如果要不显示,最多是这样变通一下,如

 

计划任务

 

Dim frm = Windows.Forms.Form.ActiveForm
If frm IsNot Nothing Then
    If frm.Name = "Class242" AndAlso frm.Text = "生成进度" Then
        frm.Hide
        application.Doevents
        MyTimers("计划1").Enabled = False
    End If
End If

 

按钮代码

 

Dim doc As New PrintDoc \'定义一个报表
Dim rt As New prt.RenderText \'定义一个文本对象
rt.Text = "Hello Foxtable" \'设置文本对象的内容
doc.Body.Children.Add(rt) \'将文本对象加入到报表

MyTimers("计划1").Interval = 1
MyTimers("计划1").Enabled = True
doc.SavePDF("C:\\Test.PDF") 
MyTimers("计划1").Enabled = False


--  作者:don
--  发布时间:2015/5/25 17:30:00
--  
多謝大紅袍!

試了方法3還是彈窗!

--  作者:don
--  发布时间:2015/5/25 21:36:00
--  
能否一次保存批量生成的报表,而不是生成一个保存一个?

Dim docs As New List(of PrintDoc )\'定义一个报表
Dim doc As  PrintDoc \'定义一个报表
Dim rt As  prt.RenderText \'定义一个文本对象
For  n1 As Integer = 1 To 2
    doc = New  PrintDoc \'定义一个报表
    rt = New prt.RenderText \'定义一个文本对象
    rt.Text = "Hello Foxtable"  & n1 \'设置文本对象的内容
    doc.Body.Children.Add(rt) \'将文本对象加入到报表
    Docs.Add(Doc)
Next


Docs.SavePDF("C:\\Test1.PDF","C:\\Test2.PDF")  \'如能批量保存就OK!
[此贴子已经被作者于2015/5/25 21:36:43编辑过]

--  作者:大红袍
--  发布时间:2015/5/25 21:38:00
--  
 肯定是不可以的。