您好:我已經成功將一個長SQL(Oracle)作爲手動輸入的OLEDB數據連接中的命令文本。然後我通過VBA成功進入SQL(因爲我需要它根據不斷變化的Item List進行更新),並且只運行聯合查詢的第一部分作爲測試。Excel VBA:OLEDB Connection.CommandText錯誤
但是,當我做了最後一項更改時,向聯合查詢添加了第二塊,並且使strQuery命令包含三個單獨的查詢字符串,現在它在此行代碼中引發錯誤:.CommandText = StrQueryAll
StrQueryAll = StrQueryBegin & StrQueryAZ & StrQueryCO & StrQueryEnd
With ActiveWorkbook.Connections("connection_name").OLEDBConnection
.CommandText = StrQueryAll
.Refresh
End With
以下是刪除了實際sql的完整代碼。 sql的代碼是否有問題太久?或者也許是另一個問題,但它間接地說有錯誤?也許它不喜歡strQueryAll命令?我可以做一個大的sql字符串,並在延續限制的基礎上添加字符串,但認爲它可能更清晰地分解sqls。
感謝您的幫助!
Private Sub Refresh_Data()
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQueryAll As String
Dim StrQueryBegin As String
Dim StrQueryAZ As String
Dim StrQueryCO As String
Dim StrQueryCA As String
Dim StrQueryEnd As String
Dim Item_List As String
Dim wksItemList As Worksheet
Dim wksDataTable As Worksheet
Dim rngItems As Range
Dim rngDatatbl As Range
Dim myMSG As String
'Dim pt As PivotTable
myString = "Refreshing Tables - Please Wait"
Application.StatusBar = myString
'With Application
'.EnableEvents = False
'.ScreenUpdating = False
'End With
Set wksItemList = Worksheets("Items")
Set rngItems = wksItemList.Range("E4")
Set wksDataTable = Worksheets("data")
Set rngDatatbl = wksDataTable.Range("A3")
Item_List = rngItems.Value
StrQueryBegin = "SELECT " & Chr(13) & "" & Chr(10) & _
..... more sql....
.... next sql string ....
StrQueryAZ = " -- **** AZ ****" & Chr(13) & "" & Chr(10) & _
" select" & Chr(13) & "" & Chr(10) & _
..... more sql....
.... next sql string ....
StrQueryCO = Chr(13) & "" & Chr(10) & " UNION " & Chr(13) & "" & Chr(10) & _
" -- **** CO SYS ****" & Chr(13) & "" & Chr(10) & _
" select " & Chr(13) & "" & Chr(10) & _
..... more sql....
.... next sql string ....
StrQueryEnd = " ) " & Chr(13) & "" & Chr(10) & _
" ORDER BY " & Chr(13) & "" & Chr(10) & _
" ITEM_NBR, WHS " & Chr(13) & "" & Chr(10)
Debug.Print StrQueryBegin & StrQueryAZ & StrQueryCO & StrQueryEnd
StrQueryAll = StrQueryBegin & StrQueryAZ & StrQueryCO & StrQueryEnd
With ActiveWorkbook.Connections("connection_name").OLEDBConnection
.CommandText = StrQueryAll
.Refresh
End With
什麼是錯誤?沒有看到SQL代碼就可能發現問題。 – user1274820
對不起,我沒有忘記補充說...它是運行時錯誤1004:應用程序定義或對象定義的錯誤。我知道這並沒有幫助。我已經發布了整個代碼沒有查詢的詳細信息。該查詢起作用,並且我已經在vba中對此進行了測試。我會繼續測試,看看我能否回溯。 – RARascon
我也忘了補充說的是我之前沒有得到那個錯誤,直到我加入到sql中。 – RARascon