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 
関連する問題