我已經非常廣泛地搜索,發現了很多關於此的主題,這幫助我獲得了我的代碼,但是我處於僵局,因爲我不是確定我在這裏做錯了什麼。 我正在嘗試創建一個臨時表,以便我可以從其他幾個表中提取信息,放入其中,然後將其推送至Excel。 現在我只是試圖從臨時表創建一個記錄集來檢查它是否正在創建,並且我在臨時錶行中發現了select *錯誤。
我得到的錯誤是:錯誤-2147217865(800040e37)無效的對象名'#TempGetBOM'需要幫助使用VBA創建臨時表使用ADO
數據庫平臺是MS SQL Server。
編輯: 我更新了代碼插入一些數據到表中,看看是否會給我的對象不存在的錯誤。它執行沒有錯誤,所以這將表明它存在。然後,在遍歷代碼的同時,我嘗試再次執行「create table」語句,並且它錯誤地告訴我該對象已經存在。
我還發現的一件事是我創建表後,如果我退回到代碼中並運行該行來檢查表是否存在並將其刪除,那麼當我到達create table行後,它仍然說表退出。很顯然,如果存在語句沒有按照我的意圖工作,則檢查並放棄。
更新代碼:
'Declare variables
Dim strSQL As String
Dim strConBase As String
Dim ADOcon As ADODB.Connection
Dim ADOrsetA As ADODB.Recordset
Dim ADOcmA As ADODB.Command
'Initialize objects
Set ADOcon = New ADODB.Connection
Set ADOrsetA = New ADODB.Recordset
Set ADOcmA = New ADODB.Command
'Ensure clean exit if there is an error
'On Error GoTo CleanExit
'Open Connections
strConBase = strConDriver & strConServer & strConApp & "WSID=" & Environ$("COMPUTERNAME") & ";" & strConDbTest & strConNetwork & strConTConn
ADOcon.ConnectionString = strConBase
ADOcon.Open
'Open Recordsets for item
strSQL = "SELECT '" & strItem & "'," & strTblItem & ".Item_desc_1," & strTblItem & ".Item_desc_2 FROM " & strTblItem & " WHERE Item_no ='" & strItem & "'"
Set ADOrsetA.ActiveConnection = ADOcon
ADOrsetA.Open strSQL
'Create a temporary table to handle the intermediary work between item and BOM recordsets
With ADOcmA
Set .ActiveConnection = ADOcon
.CommandType = adCmdText
.CommandText = "IF OBJECT_ID('#MyTempGetBOM') IS NOT NULL DROP TABLE #MyTempGetBOM"
.Execute
.CommandText = "CREATE TABLE #MyTempGetBOM (ITEM VARCHAR(255),DESCRIP1 CHAR(255),DESCRIP2 CHAR(255), LEV INT, SEQ INT, FLAG1 CHAR(255), PRIMARYKEY INT IDENTITY(1,1) PRIMARY KEY,QTY_PER NUMERIC)"
.Execute
.CommandText = "Insert Into #MyTempGetBOM (ITEM,DESCRIP1,DESCRIP2,LEV,SEQ,FLAG1,QTY_PER) select '" & strItem & "',Item_desc_1,Item_desc_2,1,'1','o',1 FROM " & strTblItem
.Execute
End With
Dim ADOrsetB As ADODB.Recordset
Set ADOrsetB = New ADODB.Recordset
strSQL = "SELECT * FROM #MyTempGetBOM"
Set ADOrsetB.ActiveConnection = ADOcon
ADOrsetB.Open strSQL
「SQL」不是數據庫平臺,因此指定您希望使用哪種實際平臺來執行此操作將很有用。 – 2014-10-03 18:16:48
數據庫平臺是MS SQL Server。 – CBRF23 2014-10-06 12:10:20