以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 一个奇怪的现象 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=105772) |
-- 作者:rjh4078 -- 发布时间:2017/8/25 16:53:00 -- 一个奇怪的现象 If s > "" Then DataTables("工单").loadFilter = "工单号 In (" & s & ")" DataTables("工单").load End If \'\'System.Threading.Thread.sleep(3000) Dim Book As New XLS.Book(ProjectPath & "Attachments\\生产计划单.xls") \'打开模板 Dim fl As String = ProjectPath & "Reports\\生产计划单.xls" Book.Build() \'生成报表 Book.Save(fl) Dim Proc As New Process Proc.File = fl Proc.Start() 红色部分代码在蓝色代码执行完成后才执行, 导致出来的表是上一个条件的数据,我加了一段紫色代码等待几秒才是正确的,,我试着把等待时间减少,发现不行,如果数据多点3秒也不行。这个要怎么处理。VB不是按顺序执行么? |
-- 作者:有点甜 -- 发布时间:2017/8/25 17:02:00 -- 不应该,load是阻塞的,肯定是加载完以后,才会执行后面的代码。
例子发上来看看。 |
-- 作者:rjh4078 -- 发布时间:2017/8/25 17:09:00 -- 项目太大了 发不了例子 |
-- 作者:有点甜 -- 发布时间:2017/8/25 17:10:00 -- 以下是引用rjh4078在2017/8/25 17:09:00的发言:
项目太大了 发不了例子
单独做个例子发上来,肯定没问题的。你其它代码影响了吧? |
-- 作者:rjh4078 -- 发布时间:2017/8/25 17:35:00 -- 这个按钮里只有这么多代码 前面是加载的生成条件 现在只有按2次出来才是正确的,第一次出来的就是上一次条件加载的数据
|
-- 作者:有点甜 -- 发布时间:2017/8/25 17:38:00 -- 以下是引用rjh4078在2017/8/25 17:35:00的发言:
这个按钮里只有这么多代码 前面是加载的生成条件 现在只有按2次出来才是正确的,第一次出来的就是上一次条件加载的数据
添加一个新表,引用你的表数据,然后执行同样的代码,有没有问题? [此贴子已经被作者于2017/8/25 17:38:32编辑过]
|
-- 作者:rjh4078 -- 发布时间:2017/8/25 17:38:00 -- Dim s As String Dim l As WinForm.CheckedListBox = e.Form.Controls("CheckedListBox1") If l.items.Count>0 Then For Each Index As Integer In l.CheckedIndices If s > "" Then s = s & "," End If s = s & "\'" & l.Items(Index) & "\'" Next If s > "" Then DataTables("工单").loadFilter = "工单号 In (" & s & ")" DataTables("工单").load Dim Book As New XLS.Book(ProjectPath & "Attachments\\生产计划单.xls") \'打开模板 Dim fl As String = ProjectPath & "Reports\\生产计划单.xls" Book.Build() \'生成报表 Book.Save(fl) Dim Proc As New Process Proc.File = fl Proc.Start() End If Else MessageBox.show("请选择导出工单!","提示") End If 完整的代码
[此贴子已经被作者于2017/8/25 17:38:33编辑过]
|
-- 作者:rjh4078 -- 发布时间:2017/8/25 17:54:00 -- 有哪里的代码会影响报表呢?报表事件里的代码全部注释了 |
-- 作者:有点甜 -- 发布时间:2017/8/25 18:00:00 -- 代码肯定没问题,你可以加入msgbox测试。
如果不行,单独做个例子发上来。 |
-- 作者:rjh4078 -- 发布时间:2017/8/25 18:52:00 -- 我在afterload事件加入了2个messagebox代码 发现这个提示是在excel报表打开后再弹出 MessageBox.show("2") e.DataTable.LoadChildren("acp") e.DataTable.LoadChildren("apo") e.DataTable.LoadChildren("ace") e.DataTable.LoadChildren("acd") MessageBox.show("3") |