iT邦幫忙

0

[VBA] 執行ADODB.Connection.Execute Excel錯誤重啟

常用VBA下SQL語法進行資料庫查詢

但這次使用的SQL語法查詢時
執行到ADODB.Connection.Execute(SQL語法)
Excel整個錯誤重啟,出現回報畫面
http://ithelp.ithome.com.tw/upload/images/20160602/20097781zLL5peQIXh.jpg

程式確認可正常連結DB進行查詢

嘗試以較簡易簡短的SQL進行查詢,是可以正常印出結果

可能是目前所要執行的SQL太長?JOIN太多TABLE? (JOIN四張TABLE)

[SQL語法大致如下]

str = "select a.x1,b.x2,a.x3,d.x4,d.x5,d.x6,e.x7,e.x8 " & _
"from AAA a " & _
"join BBB b on a.iii=b.xxx " & _
"join CCC c on a.jjj=c.yyy " & _
"join DDD d on c.kkk=d.zzz or c.lll=d.mmm " & _
"left join EEE e on d.nnn=e.ooo " & _
"where a.ppp='" & Worksheets(1).TextBox1.Value & "'"

我後來拉了一個VIEW直接SELECT VIEW查詢

但結果還是一樣@@

TABLE總筆數約3萬多筆,不知道是不是資料量太大
但其實按WHERE條件搜尋出來都只有5筆左右

向各位請益是否有解決方案

再請指教

謝謝 !

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
賽門
iT邦超人 1 級 ‧ 2016-06-02 10:36:12

用VBA的Debug功能確認到那個程式述句出問題,再來看看如何處理。

Neish iT邦研究生 1 級 ‧ 2016-06-02 10:52:12 檢舉

因為執行Excel沒有錯誤訊息
單純是執行到ADODB.Connection.Execute(SQL語法)這一行就當掉重啟
而且我嘗試將裡面的SQL語法改成單純查詢一張TABLE是可以正常印出結果

所以才想是不是因為JOIN太多張TABLE了@@

0
wybeen
iT邦新手 4 級 ‧ 2016-06-03 09:38:32

這應該很難 debug
在網路上找了類似的情況 http://answers.microsoft.com/en-us/office/forum/office_2010-excel/excel-is-crashing-using-ado-object/d647029d-375a-4fc1-b1f4-d647743a7e0e
最後發問者修改了 ODBC 的設定才解決問題
或許可以試試個別 select 四張表 看看是不是其中一張會引起問題

我要發表回答

立即登入回答