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