Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADO, не могу получить из хранимки набор записей + выходной параметр / 5 сообщений из 5, страница 1 из 1
08.12.2006, 15:38
    #34186653
Old_Fish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не могу получить из хранимки набор записей + выходной параметр
Хранимка MSSQL возвращает набор записей и output параметры.
В Query Analyser работает на ура, set nocount on установлен.

В клиенте создаю, как положено объекты
Код: plaintext
1.
2.
3.
ADODB.Connection ("Provider=SQLOLEDB;...")
ADODB.Command (adCmdStoredProc)
ADODB.Parameter (adParamInputOutput) 
ADODB.Recordset (adUseClient)

Если вызываю метод cmd.Execute, получаю правильный выходной параметр.
Если же вызываю Set rst = cmd.Execute, получаю правильный набор записей rst, а выходной параметр - нет (param.Value = NULL)
Чего я в ADO не догоняю? :(
Где засада?
...
Рейтинг: 0 / 0
08.12.2006, 16:10
    #34186781
Melkiades
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не могу получить из хранимки набор записей + выходной параметр
Приведите код.
...
Рейтинг: 0 / 0
08.12.2006, 16:11
    #34186783
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не могу получить из хранимки набор записей + выходной параметр
Set rst = cmd.Execute вытаскивает только первый рекордсет в режиме readonly. output-параметры в потоке вывода ado представляются как те же рекордсеты с одной записью.
...
Рейтинг: 0 / 0
08.12.2006, 16:12
    #34186789
Old_Fish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не могу получить из хранимки набор записей + выходной параметр
Antonariy

+1
...
Рейтинг: 0 / 0
12.12.2006, 11:56
    #34192696
Ashton
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADO, не могу получить из хранимки набор записей + выходной параметр
Antonariy все правильно говорит. Вызывая метод Execute объекта Command для создания рекордсета на основе хранимой процедуры с параметром, всегда получается доступный только для чтения набор записей с последовательным доступом.

Где-то слышал, что для того, чтобы получить реальное значение выходного параметра, необходимо закрыть рекордсет.

Код: plaintext
1.
2.
3.
   rst.Close
   Set rst = Nothing

   Debug.print cmd.Parameters( 2 ).Value

А по совету Antonariy получается примерно так.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
      Do While (Not rst Is Nothing)
          While Not rst.EOF
              For i =  0  To rst.Fields.Count -  1 
                  strRst = strRst & " : " & rst(i)
              Next i
              Debug.Print Mid(strRst,  3 , Len(strRst))
              rst.MoveNext
              strRst = ""
          Wend
          Debug.Print ""
          Set rst = rst.NextRecordset
      Loop

Сейчас у меня нет возможности проверить, отпиши, что получилось.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADO, не могу получить из хранимки набор записей + выходной параметр / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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