作者mardin (mardin)
看板Database
標題[SQL ] 利用excel vba執行複雜SQL不能超過255
時間Wed Oct 28 12:05:31 2020
各位先進大家好,
我利用excel vba執行一個複雜的SQL, 因為SQL指令的長度太長超過255
在執行VBA時, 這個SQL字串就只留前面的255bytes的指令,
造成SQL語法不完整, 出問題,
我已GOOGLE好久, 都找不到答案, 快瘋掉了, 請各位先進指導一下, 感謝。
excel 程式片段大概如下: (問在倒數第2行 SQL字串)
VVVVVVVVVVVVVVVVVVVVVVVVVVVV
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};" & _
"SERVER = localhost; " & _
"PORT = 3306" & _
"DATABASE = dbdb;" & _
"UID = root; PASSWORD = 123; OPTION=3"
conn.Open conn.ConnectionString
conn.Execute "use dbdb"
strsql = "SELECT ......." 'SQL長度超過 255, 會被截掉
rs.Open strsql, conn
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.137.45.146 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Database/M.1603857933.A.B8A.html
1F:推 Tjpmars: 在mysql內寫好sp或是view去呼叫如何? 10/28 13:36
非常感謝指點,用sp可以解決長度不會超過255,但如何抓sp產生的結果,還在試當中..
2F:→ Iories: 長度限制應是Excel儲存格的限制 strsql = 是否有儲存格? 10/29 19:54
3F:→ Iories: 若有,把固定文字都寫在VBA裡,會變動的才寫在儲存格試試 10/29 19:54
strsql 沒有儲存格, 我都用變數
4F:推 unilaico: 好像用複製貼上有時候會出現 可以用儲存格=A1&B1...把 10/30 03:40
5F:→ unilaico: 太長的語法連在一起 10/30 03:40
這個用試2種方法, 都還是會被截掉.
方法1: strsql = "select ......" & 變數1 & _
"................" & 變數2 & _
"........."
方法2: strsql = "select ......" & 變數1
strsql = strsql & "................" & 變數2
strsql = strsql & "........."
※ 編輯: mardin (118.150.201.220 臺灣), 11/01/2020 19:14:46
6F:推 unfinish: 大膽猜一下 原po應該是設中斷點再從區域變數視窗直接抓 11/10 13:46
7F:→ unfinish: 變數內容裡的字串出來吧 後面加一行Range("A1")=strsql 11/10 13:46
8F:→ unfinish: 用儲存格看 保證查詢字串一個字不少 我覺得原po查詢字 11/10 13:46
9F:→ unfinish: 串應該有語法錯誤 11/10 13:46