Возврат значений из сквозного запроса через VBA - PullRequest
3 голосов
/ 09 февраля 2011

У меня есть код VBA для выполнения запроса в SQL-Server 2008. Он работает нормально и отображает таблицу, которая мне нужна. Код, который делает это здесь:

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 без отображения таблицы?

Ответы [ 2 ]

3 голосов
/ 09 февраля 2011

Следующий код не проверен, но должен указать вам правильное направление:

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
1 голос
/ 09 февраля 2011

Все, что вам нужно сделать, это выполнить запрос и установить его вывод в набор записей.С макушки головы что-то вроде этого

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...