我已经非常广泛地搜索,发现了很多关于此的主题,这帮助我获得了我的代码,但是我处于僵局,因为我不是确定我在这里做错了什么。 我正在尝试创建一个临时表,以便我可以从其他几个表中提取信息,放入其中,然后将其推送至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