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


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

主题:一个奇怪的现象

帅哥哟,离线,有人找我吗?
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不是按顺序执行么?


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


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

项目太大了 发不了例子

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


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
rjh4078
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

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

 回到顶部
帅哥哟,离线,有人找我吗?
rjh4078
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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")

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


加好友 发短信
等级:狐精 帖子:3370 积分:24858 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/8/25 19:04: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        
       vars("生成计划")=true
    End If
    
Else
    MessageBox.show("请选择导出工单!","提示")
End If

beforeload:vars("生成计划")=false

afterload:
e.DataTable.LoadChildren("acp")
e.DataTable.LoadChildren("apo")
e.DataTable.LoadChildren("ace")
e.DataTable.LoadChildren("acd")
if vars("生成计划")=true then
 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()
endif


现在能正常工作了 但是我觉得肯定哪里BUG


 回到顶部