2015-08-19 9 views
1

У меня есть хранимая процедура SQL Server, которую я пытаюсь выполнить из Excel через некоторый код VBA. Однако хранимая процедура имеет два выхода (см. Ниже).Выполнение хранимой процедуры SQL Server в VBA с несколькими выходами

Мой набор записей только потянул первую таблицу (добавлено 0 сообщений об ошибках ...), тогда как я хочу вытащить вторую таблицу.

Изображение здесь: http://i.stack.imgur.com/LxyLi.png

Вот мой код, составленный из других источников я нашел здесь:

Sub RefreshBarcodes() 
Dim Database As String 
Dim con As ADODB.Connection 
Dim strconn As String 
Dim SQLServer As String 
Dim Session As String 
Dim strSQLCommandOne As String 


Application.ScreenUpdating = False 
Worksheets("Master").Activate 
Database = Worksheets("Master").Cells(5, "H").Value 
SQLServer = Worksheets("Master").Cells(4, "H").Value 
Session = Worksheets("Master").Cells(6, "H").Value 

'Connect to Database 
Set con = New ADODB.Connection 
strconn = "Provider=sqloledb; Data Source=" & SQLServer & ";Initial Catalog = " & _ 
Database & "; INTEGRATED SECURITY=SSPI; " 
con.Open strconn 

'Set SQL Commands 
strSQLCommandOne = "set nocount on; exec spGetSessionSourceCounts 'HNW-CLU-001-024_01_0005'" 

'Open Recordset 
Dim rs As ADODB.Recordset 
Set rs = New ADODB.Recordset 

'Execute and copy to Excel 
rs.Open strSQLCommandOne, strconn 
    rs.MoveFirst 
    Worksheets("Session").Activate 
    Cells(1, 1).Select 
    ActiveCell.CopyFromRecordset rs 
rs.Close 

Worksheets("Master").Activate 
Cells(6, "H").Value = "Session updated" 

con.Close 

Application.ScreenUpdating = True 

End Sub 

Excel выходные: http://i.stack.imgur.com/b7i3B.png

Я хотел бы быть в состоянии потянуть в первый (сообщение об ошибке) и второй результат (информация сессии), но в основном требуется только вторая таблица. Большое спасибо заранее!

+0

вам нужно написать лучше хранимую процедуру для захвата ошибки с выходными Params. – cyboashu

+0

Возможно, вам нужно: https://msdn.microsoft.com/en-us/library/windows/desktop/ms677539(v=vs.85).aspx (никогда не делал этого сам) –

+0

Еще одна ссылка, которая может быть полезна для вы: https://support.microsoft.com/en-us/kb/245179 –

ответ

0

Для доступа ко второй записей, необходимо выполнить следующую строку: -

'Activate the next available recordset 
Set rs = rs.NextRecordset 

If Not rs Is Nothing Then 

    'Add code in here 

End If 
+0

Удивительный, заставил его работать. Просто создал rs2 и сохранил следующий набор записей. Благодаря! – user2559299