Delphi Cannot perform this operation on a closed dataset

Проблема: При нажатии на кнопку в программе появляется сообщение об ошибке.

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);

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *