请问这个滚动条是怎么回事?

forget_foretime 2005-05-16 09:51:59
我做了一个滚动条,在工资汇总的时候调用它,可是现在实现不了,滚动条的功能可以实现,可是它总是发生在汇总结束之后,请看代码:
Private strURL As String
Private intProgressBarMax As Integer

Private Sub Form_Load()
intProgressBarMax = 50
ConfigureBar ProgressBar1
With Timer1
.Enabled = False
.Interval = 100
End With
End Sub

Private Sub Timer1_Timer()
Static counter As Integer
If counter = intProgressBarMax Then
Timer1.Enabled = False
counter = 0
ProgressBar1.Visible = False
Exit Sub
Else
counter = counter + 1
ProgressBar1.Value = counter
End If
End Sub

Private Sub ConfigureBar(prgBar As ProgressBar)
With ProgressBar1
.Max = intProgressBarMax
.Visible = False
End With
End Sub
以上的代码都可以实现功能:关键在这里,下面:
Dim t As Integer
t = MsgBox("是否对工资数据进行汇总)
If t = vbYes Then
'对工资进行汇总
ProgressBar1.Visible = True
Timer1.Enabled = True
Call wage_total
End If
wage_total是我定义的一个过程,其中的操作是数据库表之间的删除和插入,最后一句是:msgbox "成功汇总" 我把ProgressBar1.Visible = True Timer1.Enabled = True写到wage_total中也没有用,不管怎么写,滚动条都是在"成功汇总"消息框弹出之后按开始运行,太奇怪了,我写错什么了吗?

Private Sub wage_total()
rsWage.Open "delete wage", cn, adOpenStatic, adLockOptimistic
If rsWage.State = 1 Then rsWage.Close
rsWage.Open "select * from wage", cn, adOpenStatic, adLockOptimistic
Dim rsStaff As New ADODB.Recordset
rsStaff.Open "select staff_id,staff_bwage from staff", cn, adOpenStatic, adLockOptimistic
If rsStaff.EOF <> True And rsStaff.BOF <> True Then
Do Until rsStaff.EOF
With rsWage
.AddNew
.Fields(0) = Trim(rsStaff.Fields(0))
.Fields(2) = Trim(rsStaff.Fields(1))
.Update
End With
rsStaff.MoveNext
Loop
End If
Set rsStaff = Nothing
MsgBox "完成对工资数据的汇总!", vbOKOnly + vbInformation, "注意"
...全文
95 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
forget_foretime 2005-05-20
  • 打赏
  • 举报
回复
再没有人回答了吗?算了,问了也不告诉,结帐
forget_foretime 2005-05-20
  • 打赏
  • 举报
回复
再没有人回答了吗?算了,问了也不告诉,结帐
byhum 2005-05-18
  • 打赏
  • 举报
回复
我不明白,支持一下
forget_foretime 2005-05-18
  • 打赏
  • 举报
回复
再没有人回答吗?
forget_foretime 2005-05-17
  • 打赏
  • 举报
回复
我想先让这个进度条有效了,再考虑总数是多少
pweixing 2005-05-16
  • 打赏
  • 举报
回复
加一个 do events 在
Do Until rsStaff.EOF
With rsWage
.AddNew
.Fields(0) = Trim(rsStaff.Fields(0))
.Fields(2) = Trim(rsStaff.Fields(1))
.Update
End With
rsStaff.MoveNext
后面,这样系统才可以在循环进行的过程中调用 timer 从而刷新进度条。
但是我个人认为你这样做不好,因为你使用timer的值给进度条赋值,就会出现进度条满了,但是系统仍然在运算,所以我觉得你应该在访问数据库的时候取得循环的总数,然后用这个 总数/100给进度条赋值,这样,当循环完毕后进度条刚好 到达100%。
forget_foretime 2005-05-16
  • 打赏
  • 举报
回复
不行,我刚加上do events还没运行,一换行,就提示错误,就:编绎错误,缺少while或until或语句结束。
怎么办啊

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧