以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  窗口显示滞后的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=88231)

--  作者:天若千颖
--  发布时间:2016/7/29 14:12:00
--  窗口显示滞后的问题
版主老师,我在功能区设置了一个“”数据备份“”的按钮,按钮的Click事件为打开进度窗口,点击这个按钮后弹出数据备份进度的窗口,窗口中有一个显示备份进度的进度条和文字,窗口的AfterLoad事件代码为:

e.Form.Controls("Label1").Text = "正在进行备份,请稍后..."
Application.DoEvents()
Dim p As WinForm.ProgressBar
p = e.Form.Controls("ProgressBar1")
p.Maximum = DataTables.Count
\'设置最大值
p.Minimum = 0 \'设置最小值
p.Value = 0 \'设置当前值
Dim t As String
Dim i As Integer = 0
Dim cs As String
cs=Format(Date.Now, "yyyyMMddHHmmss")
For Each dt As DataTable In DataTables
    Dim ex As New Exporter
ex.FilePath = ProjectPath & "Backup\\" & cs & ".mdb"
    ex.SourceTableName = dt.Name
    i= i + 1
p.value=i
    t = dt.LoadFilter
    If t <> "" Then
        dt.LoadFilter= ""
        dt.load
        ex.Export()
        dt.LoadFilter = t
        dt.load
    Else
        ex.Export()
    End If
Next
e.Form.Controls("Label1").Text = "备份完成"
e.Form.Controls("Label3").Text = " 文件名:" & cs & ".mdb"


这个代码能实现自动备份,但是问题是,当我点击“数据备份”按钮之后,并没有弹出这个显示进度的窗口,但是数据备份工作已经开始了,当备份完了,这个窗口才弹出来,这是怎么回事?

如何修改让点击“数据备份”这个按钮之后,这个进度窗口就立即显示出来?


--  作者:天若千颖
--  发布时间:2016/7/29 14:17:00
--  
因为数据有点大,所以备份时间要1-2分钟,等备份完了,这个窗口才显示出来。
--  作者:Hyphen
--  发布时间:2016/7/30 8:26:00
--  
开启窗口计时器,上面代码放到TimerClick事件

e.Form.TimerEnabled = False
\'这里开始是原来的代码
......

--  作者:天若千颖
--  发布时间:2016/8/2 8:16:00
--  
这样不对,进度窗口是打开了,但是进度条不动,也没有执行备份的代码。
--  作者:Hyphen
--  发布时间:2016/8/2 11:50:00
--  
看能不能弹出对话框

e.Form.TimerEnabled = False
e.Form.Controls("Label1").Text = "正在进行备份,请稍后..."
Application.DoEvents()
Dim p As WinForm.ProgressBar
p = e.Form.Controls("ProgressBar1")
p.Maximum = DataTables.Count
\'设置最大值
p.Minimum = 0 \'设置最小值
p.Value = 0 \'设置当前值
Dim t As String
Dim i As Integer = 0
Dim cs As String
cs=Format(Date.Now, "yyyyMMddHHmmss")
For Each dt As DataTable In DataTables
msgbox(dt.Name) 
    Dim ex As New Exporter
    ex.FilePath = ProjectPath & "Backup\\" & cs & ".mdb"
    ex.SourceTableName = dt.Name
    i= i + 1
    p.value=i
    Application.DoEvents()
    t = dt.LoadFilter
    If t > "" Then
        dt.LoadFilter= ""
        dt.load
        ex.Export()
        dt.LoadFilter = t
        dt.load
msgbox("1") 
    Else
msgbox("2")
        ex.Export()
    End If
Next
e.Form.Controls("Label1").Text = "备份完成"
e.Form.Controls("Label3").Text = " 文件名:" & cs & ".mdb"

--  作者:天若千颖
--  发布时间:2016/8/2 12:38:00
--  
能打开备份的窗口,因为本来“本地备份”这个按钮就是打开这个窗口,现在窗口是打开了,但是滚动条不动,不能备份。
--  作者:狐狸爸爸
--  发布时间:2016/8/2 12:42:00
--  
参考:
http://www.foxtable.com/webhelp/scr/1476.htm


--  作者:天若千颖
--  发布时间:2016/8/2 12:49:00
--  
狐爸,你这个帮助我已经看过了,这个是针对显示的文字的时间问题。

我这个是窗口显示滞后的问题,点击按钮后,窗口弹不出来,但是已经在执行窗口中的代码了,只有执行完了,窗口才显示出来。

--  作者:狐狸爸爸
--  发布时间:2016/8/2 12:51:00
--  
 结合3楼和7楼的方法
--  作者:天若千颖
--  发布时间:2016/8/2 13:44:00
--  
狐爸,我知道你也比较忙,但是,你们的回答都把问题复杂话了,能直接告诉我一个解决办法吗,楼都跟了好几层了,问题仍然存在。