Foxtable(狐表)用户栏目专家坐堂 → 一个奇怪的现象


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

主题:一个奇怪的现象

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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
一个奇怪的现象  发帖心情 Post By: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不是按顺序执行么?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/25 17:02:00 [只看该作者]

不应该,load是阻塞的,肯定是加载完以后,才会执行后面的代码。

 

例子发上来看看。


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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/8/25 17:09:00 [只看该作者]

项目太大了 发不了例子

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/25 17:10:00 [只看该作者]

以下是引用rjh4078在2017/8/25 17:09:00的发言:
项目太大了 发不了例子

 

单独做个例子发上来,肯定没问题的。你其它代码影响了吧?


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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/8/25 17:35:00 [只看该作者]

这个按钮里只有这么多代码 前面是加载的生成条件 
现在只有按2次出来才是正确的,第一次出来的就是上一次条件加载的数据

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/25 17:38:00 [只看该作者]

以下是引用rjh4078在2017/8/25 17:35:00的发言:
这个按钮里只有这么多代码 前面是加载的生成条件 
现在只有按2次出来才是正确的,第一次出来的就是上一次条件加载的数据

 

添加一个新表,引用你的表数据,然后执行同样的代码,有没有问题?

[此贴子已经被作者于2017/8/25 17:38:32编辑过]

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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/8/25 17:54:00 [只看该作者]

有哪里的代码会影响报表呢?报表事件里的代码全部注释了

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/25 18:00:00 [只看该作者]

 代码肯定没问题,你可以加入msgbox测试。

 

 如果不行,单独做个例子发上来。


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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By: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")

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