2013-07-06 36 views
0

我的excel VBA應用程序出現問題。我使用我的excel VBA連接到MySQL以從數據庫中獲取一些值。查詢是一個「左外連接」,它將表1的非現有數據與表2連接起來。表1有26000行,表2有320000行。我的查詢的更多細節可以在下面的鏈接中找到。Excel VBA程序停止執行MySQL查詢

MySQL optimized query for not in

VBA代碼是工作完全正常,直到今天早上。我得到一個「」發送命令到程序「出現問題」在早上警告。但是,我只是忽略了警告並執行了程序。有效。停止該程序後,我決定修復上述錯誤。我剛剛爲Microsoft網站的錯誤執行了「修復」解決方案,並且我的程序停止執行上述查詢。對於會發生什麼,我感到無能爲力。

  • 我重新安裝了兩次excel(微軟專業加2010),但沒用。
  • 我在MySQL服務器中運行查詢來檢查查詢是否有問題。它工作得很好,需要大約4分鐘才能執行。
  • 我試着改變excel的兼容模式(C:/ program Files(x 86)/ Microsoft Office/Excel)。它沒有幫助。
  • 我跑了我的程序大約半個小時,但很奇怪我的程序沒有執行查詢。
  • 我相信我可能在不知不覺中改變了我的設置。但即使重新安裝辦公室後,爲什麼我無法執行查詢?

編輯:

Private Sub CommandButton1_Click() 
Start 
End Sub 

Function Start() 
Dim f1, f2, f3, Increment 
Dim oConn As ADODB.Connection 
Dim rsPass As ADODB.Recordset 
Dim sql As String 
Dim strBatchName, obj, res 

Set oConn = New ADODB.Connection 
oConn.Open "ramesh" 
sql = "My Left outer join query goes here" 
Set obj = oConn.Execute(sql) 
Do Until obj.EOF 
Sleep 1000 
f1 = obj.Fields(0).Value 
f2 = obj.Fields(1).Value 
f3 = obj.Fields(2).Value 
Increment = GetMaximumID 
Search f1:=f1, f2:=f2, f3:=f3, 
Increment:=Increment 
obj.MoveNext 
Loop 
oConn.Close 
End Function 

Function GetMaximumID() As Integer 

Dim oConn As ADODB.Connection 
Dim rsPass As ADODB.Recordset 
Dim sql As String 
Dim Increment, obj 
Set oConn = New ADODB.Connection 
oConn.Open "ramesh" 
sql = "SELECT max(id) FROM AutoIncrementor" 
Set obj = oConn.Execute(sql) 
Increment = obj.Fields(0).Value 
oConn.Close 
GetMaximumID = Increment 
End Function 

Function Search goes here 
+0

我們幾乎不可能猜測出什麼問題,特別是沒有代碼來查看... –

+0

我已經添加了一些代碼。希望它可能夠了。如果您需要更多信息,我可以將其發佈到私人聊天窗口中。 – Ramesh

+0

那麼,它錯誤的是什麼? –

回答

0

好吧,看來兼容性問題是創造的問題。我使用的是Microsoft professional plus 2010.我重新安裝了辦公室,並遵循下面鏈接中提到的大多數步驟。
http://www.jkp-ads.com/Articles/StartupProblems.asp

作爲最終解決方案,我做了以下步驟。

  • 打開的C:\ Program Files文件(x86)\ Microsoft Office \ Office14。
  • 右鍵單擊Excel.exe並選擇屬性
  • 選擇兼容性並取消選中「以兼容模式運行此程序」選項。