Не всегда формируется ADORecorset

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
cherep20
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.04.2005 (Чт) 17:26

Не всегда формируется ADORecorset

Сообщение cherep20 » 28.04.2005 (Чт) 17:32

Помогите, в чем может быть проблема?
Выполняется ХП на Оракле и рекордсет на клиенте получает данные.
Если строк возвращяется немного <50, то все ОК, а если, например, около 300, то рекордсет не формируется. То есть он вроде как открыт, но кол-во строк=-1 и ошибок никаких не выдается.
Помогите.
Строка коннекта
Код: Выделить всё
Connection.Open "Provider=OraOLEDB.Oracle;Data Source=" & DBalias & ";User Id=" & username & ";Password=" & pass & ";Extended Properties=PLSQLRSet=1;PwdChgDlg=0"


Обращение к ХП

Код: Выделить всё
    Dim cmd As ADODB.COMMAND
    Dim rs As ADODB.Recordset
    Set cmd = New ADODB.COMMAND
    cmd.CommandType = adCmdStoredProc
    cmd.ActiveConnection = Connection
    cmd.CommandText = "Имя ХП"
    cmd.Parameters.Append cmd.CreateParameter("p_1", adNumeric, adParamInput, 8, in_1)
....................................
    cmd.Parameters.Append cmd.CreateParameter("p_n", adNumeric, adParamInput, 8, in_n)
    Set rs = cmd.Execute

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.04.2005 (Пт) 5:29

Курсор поставь клиентский.
Или не полагайся на значение RecordCount, оно часто всякую фигню содержит. Юзай BOF и EOF...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.04.2005 (Пт) 7:25

И у тебя странный какой-то провайдер. Какая версия Oracle? Вроде бы родной провайдер по другому пишется, поищу сейчас.
Lasciate ogni speranza, voi ch'entrate.

cherep20
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.04.2005 (Чт) 17:26

Сообщение cherep20 » 29.04.2005 (Пт) 9:10

alibek писал(а):И у тебя странный какой-то провайдер. Какая версия Oracle? Вроде бы родной провайдер по другому пишется, поищу сейчас.


Oracle 9.2
А курсор пытаюсь установить в клиентский для объекта rs, но после выполнения cmd у него становиться тип серверный.

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 29.04.2005 (Пт) 9:15

cherep20
Если, alibek, прав, то тебе сюда.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

cherep20
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.04.2005 (Чт) 17:26

Сообщение cherep20 » 29.04.2005 (Пт) 9:15

и на recordcount я не полагаюсь - это для примера написал.
А bof или eof недоступны, так как объект рекордсет несформирован.
Такое впечатление, что либо ADO либо провайдер глючит....
Ладно бы не работало, так ведь для небольшого числа записей работает, а для более 300 уже нет.
В чем дело?

cherep20
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.04.2005 (Чт) 17:26

Сообщение cherep20 » 29.04.2005 (Пт) 9:21

FAKK2 писал(а):cherep20
Если, alibek, прав, то тебе сюда.


Так у меня тоже самое в коннекте написано :)
Да и ошибись с коннектом - не работало бы.
А тут работает, только как-то криво.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 29.04.2005 (Пт) 9:47

Доступ к серверу есть? Может просмотреть сессию, что там творится?
Может быть таймаут очень маленький и клиент отрубается при больших запросах?
Lasciate ogni speranza, voi ch'entrate.

cherep20
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.04.2005 (Чт) 17:26

Сообщение cherep20 » 29.04.2005 (Пт) 10:37

С сервером все в порядке.
Разобрался.
Всем спасибо.

Изменил значение параметра FetchSize соединения, чтобы за одну итерацию все данные на клиент приходили.

cherep20
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.04.2005 (Чт) 17:26

Сообщение cherep20 » 29.04.2005 (Пт) 10:38

Oracle мануал - великая вещь.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 48

    TopList