13.08.2020, 19:56 [+3 UTC]
в нашей команде: 4 695 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.89 (25.04.2020)
JS-v.1.45 | CSS-v.3.39

Общие новости:
13.04.2020, 00:02

Форум:
02.08.2020, 11:21

Последний вопрос:
13.08.2020, 18:01
Всего: 152776

Последний ответ:
13.08.2020, 13:24
Всего: 260354

Последняя рассылка:
13.08.2020, 01:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
01.11.2015, 12:11 »
Геннадий
Не однократно пользовался услугами вашего сервера, всегда есть ответ на вопрос и всегда полезная информация. Очень хорошо , что есть куда обратится , где всегда помогут.

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 338
puporev
Статус: Профессор
Рейтинг: 37
Gluck
Статус: 1-й класс
Рейтинг: 1

Перейти к консультации №:
 

Консультация онлайн # 146332
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: Maksim Trofimov
Отправлена: 07.10.2008, 15:11
Поступило ответов: 1

Хай

Почему вылетает ошибка "эту операцию нельзя выполнять при закрытом dataset" в этом случае:

procedure Tdm.tb_institutesAfterScroll(DataSet: TDataSet);
 begin
  if DataSet.State = dsBrowse then
    begin
      dm.qr_institutespec.Parameters.Items[0].Value:= dm.tb_institutes.FieldByName('ID').AsInteger;
      dm.qr_institutespec.Requery();
    end;
end;


Проверка на dsBrowse же имеется и значит блок кода должен выполниться тогда, когда статус таблицы будет в режиме чтения, а значит и открытой таблица (dataset) должна быть в это время! smile

Последнее редактирование 07.10.2008, 15:11 [неизвестный]

Состояние: Консультация закрыта

Ответ # 231447 от Виктор Пырлик

Здравствуйте, Maksim Trofimov!

© Цитата: перевод справки Delphi
State – состояние набора данных.
Это состояние определяет возможные операции с набором данных, как например, запись, редактирование, вставка. По мере работы приложения, состояние набора данных постоянно меняется. Открытие набора данных меняет состояние dsInactive на dsBrowse. При редактировании или встевки данных приложением, состояние набора данных помечается как dsEdit или dsInsert соответветсвенно. Если набор данных это TTable или TClientDataSet, приложение может перевести набор данных в состояние dsSetKey, вызвав методы SetKey или SetRange. Закрытие набора данных переводит его состояние в dsInactive.


DataSet.State in [ dsBrowse... ] - Может являться источником ошибок, т.к. это свойство только чтения и не переводит набор данных в иное состояние. На этом месте может возникнуть ошибка.
Замените на
if DataSet.Active then
begin
end ;


Консультировал: Виктор Пырлик
Дата отправки: 07.10.2008, 18:53

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.13463 сек.

© 2001-2020, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.89 от 25.04.2020
Версия JS: 1.45 | Версия CSS: 3.39