Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Kangaroo
1

При попытке выполнения строчки myRecordset = myRecordset.NextRecordset() возникает ошибка

06.12.2010, 10:13. Просмотров 1560. Ответов 12
Метки нет (Все метки)

Хранимая процедура возвращает два рекордсета. Необходимо пройтись по обоим рекордсетам. Но при попытке выполнения строчки myRecordset = myRecordset.NextRecordset() возникает ошибка:

ADODB.Recordset (0x800A0CB3)
Current provider does not support returning multiple recordsets from a single execution.

Уже и разные режимы открывания коннекта и рекордсета пробовал с разными типами блокировок и курсоров - все равно эта ошибка. Может из ASP нельзя работать с мультирекордсетами? Софт у меня современный, содержит свежие ADO/ODBC, поскольку стоят и успешно работают .NET Framework и VS.NET.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2010, 10:13
Ответы с готовыми решениями:

При попытке вывести на экран данные из БД возникает ошибка
Контролер using System; using System.Collections.Generic; using System.Linq; using...

При попытке записать в app.config возникает ошибка NullReferenceException
Возникает NullReferenceException. Почему? App.config присутствует в проекте. Configuration...

При попытке создания письма с данными регистрации на сервере возникает ошибка: разрешение отклонено.
Вот фрагмент программы, короче я не знаю, почему, но при попытке создания письма с данными...

При попытке создать объект obj=Server.CreateObject('Name.ClassName') Возникает ошибка, 'Объект не поддерживает это свойство или метод.'
При попытке создать объект obj=Server.CreateObject('Name.ClassName') Возникает ошибка, 'Объект не...

MyRecordset.RecordCount ВОЗВРАЩАЕТ -1?!!
Хочу получить количество записей в recordSet'e, а это свойство выдает -1 В чем грабли?

12
bazile
65 / 41 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
06.12.2010, 11:02 2
Из ASP точно можно обращаться к нескольким рекордсетам.
Сообщение об ошибке утверждает что провайдер доступа к БД не поодерживает их. Какая у вас база? Неплохо также, если вы приведете свой код.
0
Kangaroo
06.12.2010, 11:07 3
БД - MS SQL Server 2000
Вот мой код:
var myDBconn = Server.CreateObject('ADODB.Connection');
try{
//myDBconn.CursorLocation = adUseServer; //3;
myDBconn.open( 'Provider='SQLOLEDB' Data Source = 'имя_сервера_бд' initial catalog = имя_бд;Integrated Security='SSPI'' );
}
catch(ex){
Response.Write(ex.message);
Response.End();
}

//var myRecordset = Server.CreateObject('ADODB.Recordset');
//myRecordset.CursorLocation = adUseServer; // adUseClient;
//myRecordset.CursorType = adOpenStatic;
//myRecordset.LockType = adLockReadOnly;
var myRecordset = myDBconn.Execute(ProcWithParams);
var sResult = '';
while (myRecordset != null){
sResult += myRecordset;
myRecordset = myRecordset.NextRecordset();
}
myDBconn.Close();
myDBconn = null;
return sResult;
Kangaroo
06.12.2010, 11:10 4
...реально у меня в цикле while не совсем такой код, просто я убрал лишнее.. там правильнее было бы написать например sResult += myRecordset.Fields.Item(1);

не это причина ошибок, на всякий случай уточнил.
bazile
65 / 41 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
06.12.2010, 11:20 5
Проверьте в QA не возникают ли при выполнении процедуры ошибки. Это может быть причиной ошибки.
http://support.microsoft.com/default.aspx?scid=kb;en-us;313861
0
Kangaroo
06.12.2010, 11:29 6
Интересная ссылка, спасибо. У меня ситуация такова:
если не дерагть .NextRecordset(), а брать только 1-й рекордсет, то все работает.

В хранимой выполняется нечто вроде select 1; select 2;
Причем select 1 возвращает 1 строку.
А select 2 возвращает порядка 300 строк, для каждой из которых выполняется много вычислений. То есть в QA выполнение идет без ошибок, но выполнение 2 запроса длится порядка 5 секунд.
Kangaroo
06.12.2010, 11:49 7
Поставил в строке коннекта Connection Timeout = 1000;
Думал, проблема во времени выполнения 2-го запроса, но это не помогло.

Может настройки БД какие-то дикие...

Эта проблема живет в системе, написанной еще до меня. До меня видать тоже с ней столкнулись, т.к. ее решили, написав на .Net класс, который работает с мультирекордсетом и возвращает уже обработанный результат.
bazile
65 / 41 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
06.12.2010, 11:53 8
Врядли тут тайм-аут виноват. Все-таки в таким случае соответствующее сообщение о ошибке выдается. Кроме, того вы не тот тайм-аут выставляли .
Попробуйте, так:
var myDBconn = Server.CreateObject('ADODB.Connection');
myDBconn.CommandTimeout = 60;
0
Kangaroo
06.12.2010, 11:58 9
Попробовал и 60, и 600. Не помогло.
bazile
65 / 41 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
06.12.2010, 12:03 10
Значит думаем дальше.
Между SELECТ-ами в процедуре есть какие-нибудь другие действия с базой? Проверить это можно просто - запускаете запрос в QA и на закладке messages у вас должно быть что-то вроде такого:
(1 row(s) affected)
(300 row(s) affected)
0
Kangaroo
06.12.2010, 12:05 11
Нет, там пусто.

В указаны:
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
Kangaroo
06.12.2010, 12:17 12
Уважаемый bazile, извините, что потратил Ваше время. Проблема была не совсем там, где я ее указывал. То есть сообщение об ошибке возникало именно на строчке .NextRecordset().

Но я сейчас убрал строчку, обрабатывающую рекордсет, находящуюся до .NextRecordset(). То есть в цикле while просто бегаю по списку рекордсетов - все работает.

Видимо проблема на этапе обработки данных, моежт там портится рекордсет.

Буду разбиратся.
bazile
65 / 41 / 68
Регистрация: 15.03.2007
Сообщений: 6,909
06.12.2010, 12:18 13
Удачи
0
06.12.2010, 12:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2010, 12:18

Возникает ошибка при попытке регистрации
Здравствуйте, недавно начал изучать андроид, и его взаимодействие с php скриптом, а также БД...

При попытке сделать фильтрацию возникает ошибка
Добрый день. Ситуация такая: подключился к БД созданной в MSAccess. Вывел данные из неё в DBGrid....

Возникает неизвестная ошибка при попытке скомпилировать программу
#include <iostream> #include <iomanip> #include <math.h> #include <conio.h> #define LIM 5.5 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru