我试图在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