Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Возврат из ХП recordset и output value / 3 сообщений из 3, страница 1 из 1
24.02.2011, 12:09
    #37133390
KamskyPaul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат из ХП recordset и output value
Как из хранимой процедуры MS SQL получить и Recordset, и OUTPUT параметр?
Есть ХП MS SQL (2000):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE PROCEDURE sp_GetDispReport(
   @d DATETIME,
   @Gpa_Work varchar( 50 ) OUTPUT,
   @DT_Curr  varchar( 50 ) OUTPUT
)
AS 

SET NOCOUNT ON
DECLARE @D1 DATETIME
DECLARE @D2 DATETIME
DECLARE @H INTEGER
SET @Gpa_Work = "ГПА1" --например
....
-- Выдать результат
SELECT *  FROM #TMP  ORDER BY ORDERNUM ASC
--удалить временную таблицу
DROP table #tmp
GO
и вызов ее в VBA (Excel):
....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Dim rst As ADODB.Recordset
Dim cmd As ADODB.Command

Set cmd = New ADODB.Command
cmd.ActiveConnection = cnn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "sp_GetDispReport"
cmd.NamedParameters = True
Set prm = cmd.CreateParameter("@d", adDBTimeStamp, adParamInput, , d)
cmd.Parameters.Append prm

Set prm = cmd.CreateParameter("@Gpa_Work", adVarChar, adParamOutput,  50 )
cmd.Parameters.Append prm

Set prm = cmd.CreateParameter("@DT_Curr", adVarChar, adParamOutput,  50 )
cmd.Parameters.Append prm


Set rst = cmd.Execute    ' открываем Recordset
Do While Not rst.EOF
....
С rst - все хорошо, данные есть. В выходных же cmd.Parameters(...).Value - Empty.
Пробовал и так:
Код: plaintext
1.
2.
3.
cmd.Parameters.Refresh
cmd.Parameters("@d") = d
cmd.Parameters("@Gpa_Work").Direction = adParamOtput
cmd.Parameters("@DT_Curr").Direction = adParamOutput
Результат тот же..В чем может быть проблема?
...
Рейтинг: 0 / 0
24.02.2011, 12:14
    #37133410
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат из ХП recordset и output value
Код: plaintext
Set rst = cmd.Execute  

заменить на это:


Код: plaintext
1.
2.
3.
4.
5.
6.
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient

rst.Open cmd


Debug.print cmd.Parameters("@DT_Curr  ").Value
...
Рейтинг: 0 / 0
24.02.2011, 12:22
    #37133436
KamskyPaul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Возврат из ХП recordset и output value
Konst_One, большое спасибо! Заработало...
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Возврат из ХП recordset и output value / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]