不能在VBA中使用sql临时表(不能删除表)

时间:2014-06-20 07:24:51

标签: sql vba

如何更改我的vba代码,以便它能够在sql查询中运行临时表 这是我的VBA代码(存储过程包含临时表)

Sub a()
Dim connection As ADODB.connection
Dim recordset As ADODB.recordset
Dim command As ADODB.command
Dim strProcName As String 'Stored Procedure name
Dim strConn As String ' connection string.
Dim selectedVal As String


Set connection = New ADODB.connection
Set recordset = New ADODB.recordset
Set command = New ADODB.command
strConn = "Provider=SQLOLEDB.1;Persist Security Info=true;Data source =1.1.2.7\B;User ID = sa; password=a;Initial catalog=A"
connection.ConnectionString = strConn
connection.Open

command.ActiveConnection = connection
command.CommandText = "pLOAN_LIST"
command.CommandType = adCmdStoredProc
command.Parameters.Refresh
'command.Parameters(1).Value = "3"

Set recordset = command.Execute()

ThisWorkbook.Sheets("Sheet1").Cells(1, 1).CopyFromRecordset recordset

recordset.Close
Set recordset = Nothing

connection.Close
Set connection = Nothing

End Sub

2 个答案:

答案 0 :(得分:0)

实际上,生成或使用临时表的不是您的VBA代码 - 它是您的存储过程。同样,它是您的存储过程返回临时表。

例如,如果要从存储过程返回值集,只需将其选为最后一个输出...

SELECT 
    myfield1, 
    myfield2, 
    myfield_n
FROM 
    @mydefinedtable 
WHERE 
    condition = requirement 

因此,您可能需要首先确定存储过程实际执行的操作。

也许Ben Nadel可以比我更好地详细说明这一点。

答案 1 :(得分:0)

为什么不删除所有数据,而不是删除表。您不能删除正在使用的表。此解决方案可能不适合您,但如果您将数据放在表中但保留表,它基本上是相同的效果。