以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]进度条代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=134073)

--  作者:hanzhang98
--  发布时间:2019/4/26 15:53:00
--  [求助]进度条代码
老师好。想在“代码一”中加入“代码二”的进度条代码,但不知如何加入、加在那里。请老师帮助指导。谢谢。

代码一:
Dim f As New Filler    
f.SourceTable = DataTables("员工信息")  
f.SourceCols = "姓名,性别,民族,政治面貌"    
f.Fill() \'填充数据

代码二:
Dim p As WinForm.ProgressBar = Forms("进度条").Controls("ProgressBar1")
p.Maximum = MainTable.Rows.Count \'设置最大值
p.Minimum = 0 \'设置最小值
p.Value = 0 \'设置当前值
For i As Integer = 0 To MainTable.Rows.Count - 1
    代码一.......
    p.Value = p.Value + 1           \'当前值为已经完成的行数(进度条显示的进度)
Next


[此贴子已经被作者于2019/5/5 7:44:51编辑过]

--  作者:有点蓝
--  发布时间:2019/4/26 16:09:00
--  
加不了,Filler是一次性处理的,获取不到进度的
--  作者:hanzhang98
--  发布时间:2019/4/26 16:31:00
--  
老师好。那有什么方法可以进行一下提示吗,比如在开始时提示“正在复制......”  , 完成后提示 “复制完成。” 。请老师指导。谢谢。
--  作者:有点蓝
--  发布时间:2019/4/26 16:55:00
--  
参考:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=73365&replyID=&skin=1
--  作者:hanzhang98
--  发布时间:2019/4/26 18:09:00
--  
老师好。下面代码已在删除“表1”的行的代码中加入了显示进度条的代码。但只能在当前表是“表1”时才执行删除并显示进度条,否则当前表不是“表1”就不执行并提示出错“未将对象引用设置到对象的实例。”。

    请教老师,如何修改代码,才能实现在当前表不是“表1”时,也能执行删除“表1”行并显示进度条

Forms("窗口2").Open() 
Dim p As WinForm.ProgressBar = Forms("窗口2").Controls("ProgressBar1")    
p.Maximum = MainTable.Rows.Count      \'设置最大值
p.Minimum = 0      \'设置最小值
p.Value = 0     \'设置当前值
For i As Integer = 0 To MainTable.Rows.Count - 1
    Tables("表A").current.delete    \'删除行
    p.Value = p.Value + 1           \'当前值为已经完成的行数(进度条显示的进度)
    Application.Doevents
Next
Forms("窗口2").Close()

如果不加入显示进度条的代码,就能在当前表不是“表1”时,也能删除“表1”的行。

[此贴子已经被作者于2019/4/26 18:11:29编辑过]

--  作者:有点蓝
--  发布时间:2019/4/26 20:49:00
--  
Forms("窗口2").Open() 
Dim p As WinForm.ProgressBar = Forms("窗口2").Controls("ProgressBar1")    
p.Maximum = CurrentTable.Rows.Count      \'设置最大值
p.Minimum = 0      \'设置最小值
p.Value = 0     \'设置当前值
For i As Integer = CurrentTable.Rows.Count - 1 To 0 step -1
    CurrentTable.Rows(i).delete    \'删除行
    p.Value = p.Value + 1           \'当前值为已经完成的行数(进度条显示的进度)
    Application.Doevents
Next
Forms("窗口2").Close()

--  作者:hanzhang98
--  发布时间:2019/4/27 11:03:00
--  
老师好。请教老师,在“窗口1” 的按钮事件中,能不能给“窗口2”中的标签动态赋值。谢谢。
--  作者:有点蓝
--  发布时间:2019/4/27 11:07:00
--  
Forms("窗口2").Controls("标签") .text = "某某某"  
--  作者:hanzhang98
--  发布时间:2019/5/5 8:05:00
--  
老师好。以下进度条的代码已能初步运行。但是实际运行时,进度条不到满格就完成退出了,请老师帮助优化下面的代码,特别是黄色部分。谢谢。

Forms("进度条").Open() 
Dim p As WinForm.ProgressBar = Forms("进度条").Controls("ProgressBar1")  
p.Maximum = 100    \'设置最大值
p.Minimum = 0      \'设置最小值
p.Value = 5        \'设置当前值
    代码一
p.Value = 10       \'设置当前值
    代码二
p.Value = 20       \'设置当前值

p.Maximum = 20 + DataTables("工资表").DataRows.Count - 1    \'重新设置进度条的最大值(请老师帮助优化或修正代码)
For Each dr As DataRow In DataTables("工资表").DataRows
    Dim drs As List(of DataRow) = DataTables("工资累计").Select(filter)
    ......(中间代码略)
    p.Value = p.Value + 1           \'进度条当前值为已经完成的进度(显示的进度)(请老师帮助优化或修正代码)
Next
Forms("进度条").Close()  
[此贴子已经被作者于2019/5/5 8:06:49编辑过]

--  作者:有点甜
--  发布时间:2019/5/5 9:29:00
--  

Forms("进度条").Open()
Dim p As WinForm.ProgressBar = Forms("进度条").Controls("ProgressBar1")
p.Minimum = 0      \'设置最小值
p.Value = 1        \'设置当前值
p.Maximum = DataTables("工资表").DataRows.Count    \'重新设置进度条的最大值(请老师帮助优化或修正代码)
For Each dr As DataRow In DataTables("工资表").DataRows
    Dim drs As List(of DataRow) = DataTables("工资累计").Select(filter)
   
    p.Value = p.Value + 1           \'进度条当前值为已经完成的进度(显示的进度)(请老师帮助优化或修正代码)
    application.Doevents
Next
Forms("进度条").Close()

[此贴子已经被作者于2019/5/5 9:29:09编辑过]