powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Провайдер sqloledb выдает глюк???
5 сообщений из 5, страница 1 из 1
Провайдер sqloledb выдает глюк???
    #32775268
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Sub Test()
Dim conCon As New ADODB.Connection
Dim cmdCom As New ADODB.Command
Dim rstRec As New ADODB.Recordset

conCon.Provider = "sqloledb"
conCon.Properties("Data Source") = "Имя сервера"
conCon.Properties("Initial Catalog") = "База данных"
conCon.Properties("Integrated Security") = "SSPI"
conCon.Open

cmdCom.ActiveConnection = conCon
cmdCom.CommandText = "TempTest"
cmdCom.CommandType = adCmdStoredProc
'cmdCom.ActiveConnection.CursorLocation = adUseServer
cmdCom.ActiveConnection.CursorLocation = adUseClient
cmdCom.Parameters.Append cmdCom.CreateParameter("@RETURN_VALUE", adInteger, adParamReturnValue)

conCon.Execute "CREATE PROCEDURE TempTest AS select 1 RETURN "

Set rstRec = cmdCom.Execute

MsgBox IsEmpty(cmdCom.Parameters("@RETURN_VALUE"))

conCon.Execute "drop procedure TempTest"
End Sub
Попробуйте поменять курсор на cmdCom.ActiveConnection.CursorLocation. Кто-нибудь может это объяснить?

Хотя на коннекте АДП все отрабатывает нормально, но там провайдер другой (Microsoft.Access.OLEDB.10.0).
...
Рейтинг: 0 / 0
Провайдер sqloledb выдает глюк???
    #32775352
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, что отправляет sql-сервер клименту - так или иначе рекордсеты: операторы print, сообщения об ошибках, наборы данных, варнинги, возвращаемые параметры и т.п. С этим есть один нюанс. Если какой-нибудь рекордсет "застрял" и не был дофетчен до конца, то следующий набор данных не будет получен. Отсюда и неполучение возвращаемого параметра, когда есть недофетченный набор данных - результат селекта в серверном курсоре.

Код: plaintext
1.
 _________
Свет в конце тоннеля временно потушен по техническим причинам. 
...
Рейтинг: 0 / 0
Провайдер sqloledb выдает глюк???
    #32775392
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего подобного, cmd выполняется без adAsyncFetchNonBlocking или adAsyncFetch, т.е. весь рекордсет был закачан. К тому же в приведенном примере в рекордсете всего 1 запись (я пробовал делать MoveNext пока не EOF, и cmd.Parameters.Refresh после этого, и так и сяк).
...
Рейтинг: 0 / 0
Провайдер sqloledb выдает глюк???
    #32775413
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я объяснил физику явления, а не причину отчего рекордсет не считается до конца зафетченным в данном случае (я не знаю этой причины). Попробуй серверный курсор сделать статическим и попробуй сказать набору данных Close до попытки получения значения параметра.

Рефрешить параметры бесполезно.

Код: plaintext
1.
 _________
Свет в конце тоннеля временно потушен по техническим причинам. 
...
Рейтинг: 0 / 0
Провайдер sqloledb выдает глюк???
    #32775581
MVN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблемма решена. Dankov был прав, при серверном курсоре параметр не прочитать пока курсор не закрыт.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Провайдер sqloledb выдает глюк???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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