3

SQL Server 2008에서 쿼리를 실행할 VBA 코드가 있습니다. 정상적으로 실행되고 필요한 테이블이 표시됩니다. 이 작업을 수행하는 코드는 여기에 있습니다 :VBA를 통한 통과 쿼리의 결과 값

이 테이블에 표시
Set db = CurrentDb 
Set qdf = db.QueryDefs("MyStoredProcedure") 

qdf.SQL = "exec [WCNS_Ops].[dbo].MyStoredProcedure [plus a bunch of parameters]" 
DoCmd.OpenQuery "MyStoredProcedure" 

:

Picture of the table the stored procedure returns

내 질문은 이것이다 : 어떻게 프로그래밍 방식으로 테이블을 표시하지 않고 VBA 코드에 이러한 값을 반환 할를?

답변

3

다음 코드는 테스트되지 않은,하지만 당신이 올바른 방향으로 지적 얻을해야합니다

Set db = CurrentDb 

Set qdf = db.QueryDefs("MyStoredProcedure") 
qdf.ReturnsRecords = True 
qdf.SQL = "exec [WCNS_Ops].[dbo].MyStoredProcedure [plus a bunch of parameters]" 

With qdf.OpenRecordset(dbOpenSnapshot) 'could also be dbOpenDynaset, etc. ' 
    Do Until .EOF 
     Debug.Print !firstid 
     Debug.Print !lastid 
     .MoveNext 
    Loop 
End With 
+0

완벽하게 작동했습니다. 정말 고맙습니다. –

1

당신이해야 할 모든 쿼리를 실행하고 레코드로 출력을 설정합니다. 내 머리 꼭대기에서 떨어져.

Dim dbCon as new ADODB.Connection 
Dim rst as new ADODB.Recordset 
Dim cmd as new ADODB.Command 

dbCon.ConnectionString=”Your Connection String” 
with cmd 
    .comandtype=adCmdStoredProc 
    .commandtext=”Your SP name” 
    .Parameters.Append .CreateParameter("@Pram1", adVarChar, adParamInput, 50, “WhatEver”) 
    .ActiveConnection=dbCon 
    .NamedParameters = True 
    Set rst = .Execute 
end with 

with rst 
    if .EOF=false then 
     myVar=!Column1 
    end if 
end with 

rst.close 
dbcon.close 
set cmd=nothing 
관련 문제