我試圖在Excel宏中執行下面的SQL語句,但它無法返回有效的記錄集。我懷疑在同一陳述中同時使用INSERT
和SELECT
是罪魁禍首。帶插入和選擇查詢的VBA ADO單個命令
STRSQL:
DECLARE @PurchOrdersTmpXl_A147 Table(SrNo INT, PONum VARCHAR(255));
INSERT INTO @PurchOrdersTmpXl_A147 (SrNo, PONum)
VALUES (1, 'PO0001968'),
(2, 'PO0000260');
SELECT
XLPO.SrNo [PO Order],
POOrigLine.PURCHID [Orig PO],
POOrigLine.ITEMID [Orig Item],
POOrigLine.Name [Orig Txt]
FROM
dbo.PURCHLINE POOrigLine
INNER JOIN @PurchOrdersTmpXl_A147 [XLPO]
ON POOrigLine.PurchID = XLPO.PONum
WHERE
POOrigLine.PurchStatus != 4
VBA代碼
Set ADOConn = New ADODB.Connection
ADOConn.connectionString = strConnect
ADOConn.Open
Set ADOcmd = New ADODB.Command
ADOcmd.ActiveConnection = ADOConn
ADOcmd.CommandText = strSQL
Set ADOrs = ADOcmd.Execute
Debug.Print ADOrs.RecordCount // Gives error "Operation Not Allowed when object is closed"
任何幫助嗎?
在此先感謝。
注1:
我可以證實,這個錯誤是因爲我試圖執行一個Insert
查詢,並在同一個命令字符串SELECT
查詢。
如果我使用臨時表而不是上述表變量並拆分命令執行(首先執行CREATE
和INSERT
,然後再執行SELECT
),則沒有錯誤。 但是,由於我的臨時表永遠不會保存超過20條記錄,所以我認爲表變量會更有效。
同樣的錯誤。 – 147 2014-08-31 07:43:18