Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 504
от 12.10.2008, 15:35

Администратор:Gh0stik
В рассылке:Подписчиков: 244, Экспертов: 24
В номере:Вопросов: 1, Ответов: 1

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 146332: Хай Почему вылетает ошибка "эту операцию нельзя выполнять при закрытом dataset" в этом случае: <div style="margin:15px; margin-top:10px"><div><b><font color="gray">Код:</font></b></div><pre style="margin: 0px; padding: 6px; border...

Вопрос № 146.332
Хай

Почему вылетает ошибка "эту операцию нельзя выполнять при закрытом 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) должна быть в это время!
Отправлен: 07.10.2008, 15:11
Вопрос задал: Maksim Trofimov (статус: 4-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Виктор Пырлик
Здравствуйте, Maksim Trofimov!

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


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


---------
не получается там - где не пробуют
Ответ отправил: Виктор Пырлик (статус: Профессионал)
Россия, Екатеринбург
Тел.: 89043822027
ICQ: 490191733
----
Ответ отправлен: 07.10.2008, 18:53
Оценка за ответ: 5
Комментарий оценки:
Однако я был прав, что режим dsbrowse будет в true, если набор данных открыт и false в обратном )) Просто проверку надо было делать у другого набора данных - dm.qr_institutespec: procedure Tdm.tb_institutesAfterScroll(DataSet: TDataSet); begin if dm.qr_institutespec.State in [dsBrowse] then begin .. end; Однако использовать свойство active безусловно практичнее... Спасибо


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.5 от 09.10.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное