Перейти к основному контенту
Поддержка
Поддержка
Войти
Войти с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Select a different account.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой вы хотите войти.
Проблемы
Ошибка 3704 не разрешается, когда объект закрыт «» queing Catalog Failed «(каталог) ошибки возникают при формировании отчета.
Причина
Поврежденный файл FRxque32. mdb.
Решение
Выйдите из сервера отчетов FRx. Удалите файл FRxque32. mdb, расположенный в каталоге Sysdata. Снова откройте сервер отчетов. Этот actionwill повторно создает файл FRxQue32. mdb на основе шаблона, который позволит вам отправлять отчеты в очередь без ошибок.
Ссылки
Нужна дополнительная помощь?
Совершенствование навыков
Перейти к обучению >
Первоочередный доступ к новым возможностям
Присоединение к программе предварительной оценки Майкрософт >
Были ли сведения полезными?
(Чем больше вы сообщите нам, тем больше вероятность, что мы вам поможем.)
(Чем больше вы сообщите нам, тем больше вероятность, что мы вам поможем.)
Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
Моя проблема решена
Очистить инструкции
Понятно
Без профессиональной лексики
Полезные изображения
Качество перевода
Не соответствует интерфейсу
Неверные инструкции
Слишком техническая информация
Недостаточно информации
Недостаточно изображений
Качество перевода
Добавите что-нибудь? Это необязательно
Спасибо за ваш отзыв!
×
1 / 1 / 0 Регистрация: 29.04.2015 Сообщений: 88 |
|
1 |
|
03.12.2015, 09:14. Показов 9093. Ответов 9
Такая ситуация — происходит коннект к внешней базе через коннект отправляется sql запрос, объект rs =New ADODB.Recordset, затем, при методе «Do while not rs.EOF» возникает ошибка 3704, но если перед циклом поставить задержку в секунду то, запрос нормально пробегается, такое ощущение, что не хватает времени для открытия запроса. Но ставить задержку в секунду как-то накладно, если необходимо 1000 раз обращаться, то это уже 1000 секунд задержки просто так. Как можно победить данную ошибку?
__________________
0 |
7262 / 4465 / 287 Регистрация: 12.08.2011 Сообщений: 13,448 |
|
03.12.2015, 10:05 |
2 |
А если ошибку игнорировать, всё работает как надо?
0 |
1 / 1 / 0 Регистрация: 29.04.2015 Сообщений: 88 |
|
03.12.2015, 10:06 [ТС] |
3 |
да, но при этом нужно идти в Debug и продолжить выполнение, т.е. происходит задержка, я поставил перед циклом задержку на 0.6 секунд и вроде не вылетает, но это костыль какой-то получается
0 |
mobile 26772 / 14451 / 3192 Регистрация: 28.04.2012 Сообщений: 15,782 |
||||
03.12.2015, 10:08 |
4 |
|||
Попробуйте использовать DoEvents
1 |
Модератор 11267 / 4597 / 740 Регистрация: 07.08.2010 Сообщений: 13,182 Записей в блоге: 4 |
|
03.12.2015, 10:20 |
5 |
не помешает вставить счетчик повторов, иначе можно зациклиться
0 |
Silmaril 1 / 1 / 0 Регистрация: 29.04.2015 Сообщений: 88 |
||||
03.12.2015, 10:43 [ТС] |
6 |
|||
Спасибо! Получается, но немного изменил:
0 |
shanemac51 Модератор 11267 / 4597 / 740 Регистрация: 07.08.2010 Сообщений: 13,182 Записей в блоге: 4 |
||||
03.12.2015, 10:54 |
7 |
|||
Решение
1 |
1 / 1 / 0 Регистрация: 29.04.2015 Сообщений: 88 |
|
03.12.2015, 10:59 [ТС] |
8 |
Спасибо! Точно! Нужная вещь о количестве повторов, т.к. я не задумался, что связи может не быть
0 |
шапоклякистка 8-го дня 3672 / 2232 / 391 Регистрация: 26.06.2015 Сообщений: 4,647 Записей в блоге: 1 |
|
03.12.2015, 11:00 |
9 |
Помнится, читала я в какой-то из рекомендованый mobile книг, что для отлавливания такой ситуации есть свойство .State у ADODB.Recordset — оно меняется, когда рекордсет уже открыт и готов к работе. Честно говорю, что сама еще не пробовала (повода не было), просто отложилось в памяти.
1 |
1 / 1 / 0 Регистрация: 29.04.2015 Сообщений: 88 |
|
03.12.2015, 11:09 [ТС] |
10 |
Да, тоже имеет место быть, когда State = 1 то всё готово, но State в условии существенно увеличивает время обработки
0 |
Run-time error ‘3704’ Operation is not allowed when the object is closed.
To resolve the error, ensure the code you execute returns only data as a result, and not the intermediary “rows affected” messages. To achieve this, the following line to your stored procedure / code.
SET NOCOUNT ON;
Sample Error Message
Add “SET NOCOUNT ON;” to your stored procedure.
I have identified several blog posts where people experienced the same problem
Run-Time Error 3704 Operation Is Not Allowed The Object Is Closed
Setting NO COUNT ON in VBA ADODB
ADO error “3704” object is closed
The SQL Server OLEDB provider (SQLOLEDB) has a new behavior designed to provide more accurate information to the caller about what happened in the procedure. Each SQL statement within a stored procedure returns a “result,” either a count of rows affected, or a resultset.
The SQL Server ODBC provider (MSDASQL) does not provide information about the results of individual SQL statements within a stored procedure. The only result that comes back from a stored procedure execution is the result of the SELECT statement if it has one. This is why the problem does not manifest with MSDASQL.
To get SQLOLEDB to behave as the SQL ODBC driver did, you must use SET NOCOUNT ON. Put SET NOCOUNT ON in the stored procedure or in the SQL statement used with ADO as shown in the code sample below. Alternatively, you could use MSDASQL.
This behavior is by design.
The problem is described here:
Published by john.dacosta
I am a Database Consultant based in South Florida. I specialize in SQL Server Development and Administration. I have worked on projects including data archival, log shipping, SQL Server installation, performance tuning, database mirroring, disaster recovery and more recently data integration. Currently my role as a consultant has had me add focus to the particularly important subject of Documentation, Quality, Timeliness and Cross-Training within the realm of Technology Delivery.
View all posts by john.dacosta
Published
2017-10-13