2011-03-28 25 views
1

這是我的宏執行約10分鐘後得到的錯誤。宏基本上每五秒鐘執行一次更新MySQL數據庫的任務。VBA中的錯誤:在'閱讀授權數據包'中丟失與MySQL服務器的連接,系統錯誤2

enter image description here

出了什麼問題?

我的宏如下:

Public RunWhen As Double 
Public Const cRunIntervalSeconds = 10 ' five seconds 
Public Const cRunWhat = "UpdateMarketData" ' the name of the procedure to run 

Sub UpdateMarketData() 

    Dim Cn As ADODB.Connection 
    Dim Server_Name As String 
    Dim Database_Name As String 
    Dim User_ID As String 
    Dim Password As String 
    Dim SQLStr As String 
    Dim rs As ADODB.Recordset 
    Set rs = New ADODB.Recordset 

    rad = 0 



    TextStrang = TextStrang & "'" 
    field2 = "cid" 
    field1 = "bid" 
    table1 = "MMbanner" 

    For rowCursor = 3 To 4 

    SQLStr = "UPDATE tbl_MarketData SET Mid = '" & Cells(rowCursor, 2) & "',Bid = '" & Cells(rowCursor, 5) & "',Offer = '" & Cells(rowCursor, 6) & "',DateEntered = '" & Format(DateTime.Now(), "yyyy-MM-dd hh:mm:ss") & "' WHERE IndexCode = '" & Cells(rowCursor, 1) & "'" 
    Debug.Print SQLStr 
    Set Cn = New ADODB.Connection 

    Cn.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=<Servername>; PORT=Portno; DATABASE=Databasename; USER=Username; PASSWORD=Password; OPTION=0;" 

    Cn.Execute SQLStr 
    rad = rad + 1 
    Next 
Set rs = Nothing 
Cn.Close 
Set Cn = Nothing 

Call StartTimer 

End Sub 


Sub StartTimer() 
    RunWhen = Now + TimeSerial(0, 0, cRunIntervalSeconds) 
    Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _ 
     Schedule:=True 
End Sub 


Sub StopTimer() 
    On Error Resume Next 
    Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _ 
     Schedule:=False 
End Sub 

回答

3

for循環創建通過Set Cn = New ADODB.Connection等,但Cn.Closefor循環後只調用一次兩個獨立的連接。因此,創建的第一個連接沒有明確關閉,可能仍然被服務器認爲是活動的。最終你會用完可用的連接,並且事情會停下來。

不知道這是你的問題的原因,但它絕對值得修復。我會創建並在for循環之前打開連接,但將Cn.Execute部分保留在循環體內

+0

感謝您的輸入。那麼更好的選擇是什麼?關閉'for'循環中的連接?或者在for循環之前打開連接並在for循環之後關閉連接? – 2011-03-29 06:19:54

+0

第二種方法:在'for'循環之前創建並打開連接,並在'for'循環之後關閉連接 – barrowc 2011-03-29 06:21:26

+0

好的,謝謝我會盡快嘗試並回復您。感謝您的幫助:) :) – 2011-03-29 06:22:49

相關問題