VB中ON ERROR 问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 10:38:34
我的VB程序中,有个时间控件,周期是1分钟,程序UPDATE MSSQL(网络的) 里的数据。

为防止网络有问题,所以控件中我用On Error 。现在有个问题:程序使用过程中,一旦网络出现问题后,即便恢复正常了,程序也不能更新MSSQL的数据了,应该是On Error的问题,它自动跳过错误了。请问如何解决呢。异常的语句每个周期都执行,确定本次错误后才跳过,下一个周期还是同样执行。

代码如下:
Private Sub Timer1_Timer()
t1 = t1 + 1
Label18.Caption = t1
t = t1 / st
标准生产速度.Caption = Int(t)
速度差异.Caption = qty - Int(t)

If qty - Int(t) * (x / 100 - 0.1) < 0 Then
Form1.BackColor = &HFF&
Else
If qty - Int(t) * (x / 100 - 0.1) >= 0 And qty - Int(t) * x / 100 < 0 Then
Form1.BackColor = &HFFFFFF
Else
Form1.BackColor = &HFFC0C0
End If
End If

If Int(t) = 0 Then 效率.Caption = 0 Else 效率.Caption = (实际生产速度.Caption / 标准生产速度.Caption) * 100

If t1 Mod 60 = 0 Then
On Error GoTo msg11
cntms.Open
sqltms = "update prod_xl set 生产用时='" & CInt(Label18.Caption) & "',效率='" & CDbl(效率.Caption) & "',刷新时间='" & Now

应该是cntms的打开问题.你报错后cntms根本就没有关闭,所以下次再执行open方法就不会成功.

建议在msg11:里面加入这样一句
msg11:
Label30.Caption = "1分钟记录 网络异常"
if cntms.state=1 then '如果cntms是打开的则关闭他
cntms.close
end if

你这段代码是一分钟定时执行一次,在执行不成功的情况下你直接jump过就行了.然后看看cntms是否关闭掉了.估计出错是在cntms的连接问题上.建议你用err.Description 看一下报错的内容.还有用F8单步检查一下程序运行的情况.

你要在err里写重新连接!~

因为如果网络断掉了 你数据库连接也就断掉了

好像有个用法是ON ERROR NEXT 吧.试试看