找了很多答案,没找到确切的,请各位给我个代码哈,谢谢啦

解决方案 »

  1.   

    不知道这样行不:
    Option ExplicitPrivate Sub Command1_Click()
        Timer1.Enabled = True
        ' .......   '其它代码
    End SubPrivate Sub Form_Load()
        Timer1.Enabled = False
        Timer1.Interval = 5000
    End SubPrivate Sub Timer1_Timer()
        Timer1.Enabled = False
        ProgressBar1.Value = (ProgressBar1.Max + ProgressBar1.Min) / 2
        DoEvents
    End Sub
      

  2.   

    '添加 Timer1 Command1 Progressbar1Private Declare Function GetTickCount& Lib "kernel32" ()
    Dim StartTm&, kk&, PerCent%
    Private Sub Form_Load()
       Timer1.Interval = 100
       Timer1.Enabled = False
       ProgressBar1.Min = 0
       ProgressBar1.Max = 10
    End SubPrivate Sub Command1_Click()
       StartTm = GetTickCount
       ProgressBar1.Value = 0
       Timer1.Enabled = True
    End SubPrivate Sub Timer1_Timer()
       kk = Int((GetTickCount - StartTm) \ 1000)
       ProgressBar1.Value = kk
       PerCent = Int(kk / ProgressBar1.Max * 100)
       Me.Cls: Print Str(PerCent) & "%"
       If PerCent >= 100 Then
          Timer1.Enabled = False
          MsgBox "满啦"
       End If
    End Sub
      

  3.   


    首先先谢谢您写了这么长的代码给我!情况是这样的:我把您的代码和一段ADO查询的代码放在同一个按钮单击事件里(您这代码放在前头),当我单击那按钮后,后台在进行ADO查询,而前台的进度条没动,当查询一结束,进度条一下变成满格并跳出“满啦”(这个提示很好玩),进度条是一下变的,中间没有过渡的效果。也许是我本身这个思路有问题,ADO查询真不能这样放进度条吗
      

  4.   

    后台在进行ADO查询 你这已经跨界 窗体焦点已被转移 你的思路应该是 Progressbar.max=rs.recordcount 每读一笔数据 ProgressBar1.Value =ProgressBar1.Value + 1
      

  5.   


    小弟现在在 rs1.open sql... 这语句的下面加了这两行:ProgressBar1.Max = rs1.RecordCount
    ProgressBar1.Value = ProgressBar1.Value + 1结果进度条不动,一点都不动,我地方加对了吗
      

  6.   

    .max是加在开完档的后面没错ProgressBar1.Value = ProgressBar1.Value + 1 
    应该在循环读取的过程中加 读一笔便加1
      

  7.   


    哦这样啊,那可能这法子不适合我的,我的查询过程只有一句代码
    rs1.Open sql, conn, adOpenKeyset, adLockOptimistic没有循环过程呵呵
      

  8.   

    晕死........
    rs1.Open sql, conn, adOpenKeyset, adLockOpt
    你这是开档那你到底在那里处理数据?
      

  9.   

    呵呵不好意思我的程序是这样的:点击按钮后,开始以上的ADO查询,得到一个记录集rs1,然后把这个记录集用print输出成网页格式,我发觉ADO查询的时间比较久,而print的时候就比较快了,所以才想在查询的时候加个进度条,呵呵
      

  10.   

    rs.move first
    for i=0 to rs.recordcount-1
    aa=rs.fields(0) & ........
    print aa
    ProgressBar1.Value = ProgressBar1.Value + 1
    rs.move next
    next i 
      

  11.   

    rs.move first
    for i=0 to rs.recordcount-1
    aa=rs.fields(0) & ........
    print aa
    ProgressBar1.Value = ProgressBar1.Value + 1
    rs.move next
    next i 
      

  12.   

    rs.move first
    for i=0 to rs.recordcount-1
    aa=rs.fields(0) & ........
    print aa
    ProgressBar1.Value = ProgressBar1.Value + 1
    rs.move next
    next i 
      

  13.   

    我按您的方法加在print过程中了,会走了,但结果是:ADO查询用了9秒,进度条没动,print成网页的过程用了1秒,进度条“嗖”地迅速走完了,郁闷!!
      

  14.   

    for ...next 里面加个 Doevents试看
      

  15.   

    要用异步查询
    Option ExplicitPrivate WithEvents rs1 As ADODB.RecordsetPrivate Sub Command1_Click()
        ...
        Set rs1 = New ADODB.Recordset
        rs1.Open sql, conn, adOpenKeyset, adLockOpt, adAsyncExecute
    End SubPrivate Sub rs1_FetchComplete(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
        ProgressBar1.Value = ProgressBar1.Max
    End SubPrivate Sub rs1_FetchProgress(ByVal Progress As Long, ByVal MaxProgress As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
        ProgressBar1.Max = MaxProgress
        ProgressBar1.Value = Progress
    End Sub
      

  16.   


    出错提示是:对象关闭时,不允许操作然后调试都是指向诸如“If rs1.EOF...”这样的判断语句上,是不是和“cbm666”大哥说的什么开档有关呀
      

  17.   

    如果在ADO查询的时候,能跳出个窗体或者就直接在本窗体上显示“请稍等...”的提示,小弟也很满足了,我昨晚试着做了,用的是“跳出个提示窗体”,结果新窗体跳出来,查询窗体就不动了!!
      

  18.   

    异步查询应该等到 rs1_FetchComplete 之后再操作数据。
      

  19.   

    哎,还是不懂得,我甚至把adAsyncExecute改成adAsyncFetch,也还是不行,总之谢谢你了
      

  20.   

    你这样试下看看行吗在本界面界面加一个label 起始状态不可见在查询代码前面加上这么2行 看看行吗Label1.Visible = True
    DoEvents
      

  21.   


    咦,可以啊,不过奇怪,我之前也试过,只不过当时只写了Label1.Visible = True而没写DoEvents
    结果是字要等查询结束之后才显示出来,所以我就放弃了。
    想不到加了DoEvents就行了,您能告诉我DoEvents的作用是什么吗
      

  22.   

    我找了下资料,对DoEvents有了点皮毛认识,谢谢你
      

  23.   

    其实我也不懂,我也是遇到一个和你类似的问题,大概在10分钟前,看你的帖子才查DoEvents资料,有点启发才这么改的。http://hi.baidu.com/ggyy667/blog/item/2301eb251fd9906735a80f94.html我看的是这篇文章。这样只能解决一个问题,但是用进度条的问题,还在头疼中。有个想法,就是在专门为进度条做一个工程(暂叫副工程),在主工程中用shell函数调用。主工程在查询时候可以不断的在某个文件(例如txt)内写下进度内容,副工程在运行时候也不断的与那个文件通信。当读取到主工程运行完毕时候,副工程结束。主工程msgbox提示。我也在寻找更合适的方法。估计与多线程相关。