在我的程序中,我想使用定时器每隔30秒去连接一次数据库,每次连接以后,再从头到至尾的把表遍历一次,取出所有的数据,程序如下:
Private Sub Timer1_Timer()
Set cn = New ADODB.Connection
cn.ConnectionString = "Driver={SQL Server};Server=" & servName & ";UID=" & userName & ";PWD=" & userPwd & ";Database=" & dbName
cn.OpenSet rst = New ADODB.Recordset
'Set rst1 = New ADODB.Recordset
Set rst = cn.Execute("SELECT * FROM GPSInfo")While Not rst.EOF()
longitude = rst!lon
latitude = rst!lat
speed = rst!speed
direct = rst!direct
debug.print longitude
debug.print latitude
debug.print speed
debug.print direct
rst.MoveNext
Wend
End Sub
我的本意是想连接了数据库以后遍历了表中的所有数据一次以后就停止,等到下次连接数据库的时候再去读取表中的数据。但是编译的时候,程序在读完了一次表以后,又开始去读第二次了,并没有如我所愿的那样停止下来,这是怎么回事了?该如何解决了?请教各位高手!

解决方案 »

  1.   

    你的TIMER的interval 设置对吗?30000
    另外把连接这部分——》
    [Set cn = New ADODB.Connection
    cn.ConnectionString = "Driver={SQL Server};Server=" & servName & ";UID=" & userName & ";PWD=" & userPwd & ";Database=" & dbName
    cn.Open
    ]
    放到sub main 中,程序启动后一建立好连接直到整个程序结束释放 cn.close set cn=nothing
    set rst=nothing  在你的每次Timer1_Timer后释放
      

  2.   

    时间设短了!可是在读数据的时候吧timer1.enabled设成false,读完后再设为true ,但是这样时间就不是固定长度了