Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Провайдер sqloledb выдает глюк??? / 5 сообщений из 5, страница 1 из 1
10.11.2004, 12:43:40
    #32775268
MVN
MVN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Провайдер sqloledb выдает глюк???
Код: 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
10.11.2004, 13:13:25
    #32775352
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Провайдер sqloledb выдает глюк???
Все, что отправляет sql-сервер клименту - так или иначе рекордсеты: операторы print, сообщения об ошибках, наборы данных, варнинги, возвращаемые параметры и т.п. С этим есть один нюанс. Если какой-нибудь рекордсет "застрял" и не был дофетчен до конца, то следующий набор данных не будет получен. Отсюда и неполучение возвращаемого параметра, когда есть недофетченный набор данных - результат селекта в серверном курсоре.

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

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

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


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