При выполнении следующего кода:
procedure TForm4.Timer1Timer(Sender: TObject);
var
a: Integer;
begin
a := DM.ADOQuery9.RecNo;
user := LoggedOnUserNameEx(3);
DM.ADOQuery9.Active := False;
DM.ADOQuery9.SQL.Clear;
DM.ADOQuery9.SQL.Text := 'Select * from Application where (Status=' +
QuotedStr('Открыта') + ' or Status=' + QuotedStr('В процессе') + ')' +
' and (Account=' + QuotedStr(user) + ')';
DM.ADOQuery9.Active := true;
DM.ADOQuery9.RecNo := a;
end;
end.
выскакивает ошибка:
ADOQuery9. cannot perform this operation on a closed dataset
Так и не нашел места в коде, где я должен открыть набор данных для редактирования, или я вообще не туда копаю?
Kromster
13.5k12 золотых знаков43 серебряных знака72 бронзовых знака
задан 8 июн 2018 в 9:59
9
Попробуй
form1.ADOQuery1.Close;
form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Add('Select * from Application where (Status=' +
QuotedStr('Открыта') + ' or Status=' + QuotedStr('В процессе') + ')' +
' and (Account=' + QuotedStr(user) + ');
form1.ADOQuery1.Open;
form1.ClientDataSet1.Refresh;
ответ дан 10 июн 2018 в 19:33
1
Проблема: При нажатии на кнопку в программе появляется сообщение об ошибке.
Cannot perform this operation on a closed DataSet
Технические детали: На форме есть DataSet (если вы используете компоненты ADO, тогда это будет ADOQuery, ADOTable, Если UniDac — UniQuery, UniTable… В прочем это не играет большой роли для текущей ситуации). На кнопке был код, который обрабатывал некие данные находящиеся в DataSet’е, при обращении к нему появилась ошибка:
Cannot perform this operation on a closed DataSet
Инструментарий: Delphi XE
Решение: Проблема в том что мы пытаемся обратится к закрытому набору данных DataSet’а, для того чтобы решить данную проблемы пере обращением его нужно открыть.
DataSet.Active
Я к примеру использую процедуру для обновления DataSet’a, если DataSet открыт — обновляем, иначе открываем. Это не универсальное решение, но его можно использовать в большинстве случаев.
procedure RefreshDataSet(DataSet: TDataSet);
begin
if DataSet.Active then
DataSet.Refresh
else
DataSet.Open;
end;
Пример использования:
RefreshDataSet(ADOQuery1);
RefreshDataSet(UniQuery1);
Через поиск в абд попробовал найти сотрудника. В строке поиска ввёл саба и на экране появилось предупреждение:недопустимое имя столбца саба. Я нажал ок и на экране новое предупреждение Cannot perform this operation on a closed dataset”. До этого все работало хорошо. Сталкивались ли с подобным и как решали? 1 год 8 месяцев назад
#ссылка |
1 ответ
Помогла простая перезагрузка 1 год 8 месяцев назад
#ссылка |
Добавить ответ
Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)
ЗАДАН
1 год 8 месяцев назад
По каждому вопросу/ответу можно добавлять комментарии. Комментарии предназначены для уточнения вопроса/ответа.
SashaBucheR 0 / 0 / 0 Регистрация: 11.07.2013 Сообщений: 7 |
||||
1 |
||||
11.07.2013, 12:07. Показов 52993. Ответов 11 Метки нет (Все метки)
Добрый день! Есть такая проблемка: в наследство досталась программа, которая связывается с SQL сервером. Поставил вместо старого sql 2005 b поменял в ADOConnection путь. Теперь выдает ошибку: cannot perform this operation on a closed dataset (сама программа загружается и данные отображаются, это только когда начинаешь редактировать). В коде есть вот такая ерунда:
Пробовал и Integrated Security и через Юзера, толку нет. Самое интересное, что есть еще программа, которая работает с этой же базой, она работает полностью и редактировать данные можно. Где все-таки косяк? В Делфи или SQL (на сервере проверка подлинности стоит и Windows и SQl)?
0 |
478 / 391 / 112 Регистрация: 24.04.2012 Сообщений: 1,622 Записей в блоге: 3 |
|
11.07.2013, 12:31 |
2 |
cannot perform this operation on a closed dataset “невозможно выполнить операцию при закрытом наборе данных”, т.е. при редактировании идет обращение к DataSet’у, а он в свою очерез закрыт. А этот код скорее всего с ошибкой никак не связян, т.к. это строка подключения к БД.
0 |
0 / 0 / 0 Регистрация: 11.07.2013 Сообщений: 7 |
|
11.07.2013, 13:37 [ТС] |
3 |
Я понял, что это строка подключения. Просто думал, что он подключается как-то с ограниченным доступом… Сейчас гляну DataSet. Вот только я слабоват… Нашел где DataSet, а что там проверить, прописать, чтобы он был открыт)
0 |
968 / 643 / 97 Регистрация: 01.11.2012 Сообщений: 1,447 |
|
11.07.2013, 15:01 |
4 |
SashaBucheR, попробуйте у всех Датасетов (ADOTable, ADODataSet, ADOQuery), которые были подключены к вашему ADOConnection изменить свойство Active на значение True.
0 |
0 / 0 / 0 Регистрация: 11.07.2013 Сообщений: 7 |
|
11.07.2013, 15:24 [ТС] |
5 |
Это во время CreateForm
0 |
0 / 0 / 0 Регистрация: 11.07.2013 Сообщений: 7 |
|
11.07.2013, 15:46 [ТС] |
6 |
Когда подключаюсь под sa сначала выдает такие две картинки. А потом опять “cannot perform this operation on a closed dataset”
0 |
478 / 391 / 112 Регистрация: 24.04.2012 Сообщений: 1,622 Записей в блоге: 3 |
|
12.07.2013, 05:12 |
7 |
Картинки это конечно хорошо, но еще бы и код немешало бы посмотреть, который их вызывает.
0 |
SashaBucheR 0 / 0 / 0 Регистрация: 11.07.2013 Сообщений: 7 |
||||||||
12.07.2013, 08:45 [ТС] |
8 |
|||||||
Выбивает на строке OpenADOTables
Добавлено через 36 минут
0 |
478 / 391 / 112 Регистрация: 24.04.2012 Сообщений: 1,622 Записей в блоге: 3 |
|
15.07.2013, 09:58 |
9 |
а код OpenADOTables?
0 |
SashaBucheR 0 / 0 / 0 Регистрация: 11.07.2013 Сообщений: 7 |
||||||||
16.07.2013, 11:11 [ТС] |
10 |
|||||||
В том коде, что открытие карточки, я поставил проверку состояния DataSet:
Выбивает Open, то есть, как бы Dataset активен…
0 |
Bit_Man 478 / 391 / 112 Регистрация: 24.04.2012 Сообщений: 1,622 Записей в блоге: 3 |
||||||||||||
17.07.2013, 10:03 |
11 |
|||||||||||
Выбивает на строке OpenADOTables Если так то проверяй Таблицы после открытия
выбивает при создании новой карточки
Добавлено через 3 минуты
??
0 |
0 / 0 / 0 Регистрация: 11.07.2013 Сообщений: 7 |
|
18.07.2013, 11:39 [ТС] |
12 |
Там действительно была проблема в таблицах. В ComboBox как-то DataSource сбились. Вот только теперь выдает “Exception class EDatabaseError with message: Circular datalinks are not allowed” при создании формы. Добавлено через 2 часа 22 минуты
0 |
Knowledge
NPrinting error: Cannot perform this operation on a closed dataset
Article Number: 000008074 | Last Modified: 2019/12/12
Description
The error message is shown by NPrinting Server, normally when you click on the “Monitoring tool” option.
Cause
The problem is due to a corruption in the schedules.xml file.
Resolution
This problem is due to a corrupted file.
To remove the corrupted file:
- Open NPrinting Server and stop the service.
- Open the folder C:ProgramDataNPrintingMonitor
- Remove the file schedules.xml
- Restart the server.
Does this resolve the problem?
If not, within the NPrinting Management Console, stop the NPrinting Server service, remove the schedules.xml file from this directory and reinstall NPrinting Server service. A new schedules.xml file will be generated.
Get Answers
Find Answers
Qlik Community
Collaborate with over 60,000 Qlik technologists and members around the world to get answers to your questions, and maximize success.
Join Us
Get Support
Have a Question?
Search Qlik’s Support Knowledge database or request assisted support for highly complex issues.
Submit a case
Talk with a Representative
Critical Issues
Experiencing a serious issue, please contact us by phone. For Data Integration related issues please refer to your onboarding documentation for current phone number.
Call Us