Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Состояния наборов данных. Как мы уже видели ранее, наборы данных могут принимать два состояния: открытое или закрытое

Как мы уже видели ранее, наборы данных могут принимать два состояния: открытое или закрытое. При установке свойства Active в true набор данных будет открыт. Для закрытия набора данных нужно присвоить свойству Active значение false.

Набор данных можно открыть как во время работы, так и во время создания приложения. В случае, когда открыть набор данных нельзя, генерируется исключительная ситуация и выдается сообщение об ошибке. Свойство Active при этом сохраняет значение false.

ВНИМАНИЕ. При изменении свойств DatabaseName или TableName необходимо обязательно закрыть набор данных, чтобы избежать исключительной ситуации.

Кроме того, вы можете открыть набор данных с помощью вызова метода Open и закрыть с помощью метода Close:

Table1.Close; // Закрываем набор данных Query1.Open; // Открываем набор данных

Вызов этих методов имеет смысл, если вы хотите выполнить какие-либо действия перед открытием или после открытия набора данных, а также перед закрытием или после закрытия.

Итак, метод Open открывает набор данных. При вызове данного метода генерируются события BeforeOpen и AfterOpen. Вы можете написать программы-обработчики этих событий. Это очень полезно, если вы хотите не открывать набор данных до тех пор, пока не выполнились какие-либо условия. Ниже представлен пример такого обработчика:

procedure TForm1.Table1BeforeOpen(DataSet: TDataSet); begin if a<>true then Abort; end;

В данном примере, если переменная a не имеет значение true, открытие набора данных Table1 будет прервано. Это достигается вызовом процедуры Abort, в результате работы которой генерируется исключительная ситуация и операция открытия данных отменяется. При этом на экран не будет выведено никаких сведений об ошибках. Естественно, вы можете добавить команды вывода сведений для пользователя о том, что данные недоступны.

Примером использования события AfterOpen может служить приведенный ниже листинг:

procedure TForm1.Table1AfterOpen(DataSet: TDataSet); begin ShowMessage(“Таблица “+Table1.TableName+” готова к работе’); end;

Здесь после открытия набора данных выводится текстовое сообщение о готовности таблицы к работе. Имя таблицы содержится в свойстве TableName.

Метод Close закрывает набор данных. При его вызове генерируются события BeforeClose и AfterClose.

ВНИМАНИЕ. При закрытии набора данных необходимо принудительно сохранять сделанные изменения в текущей записи с помощью вызова метода Post, так как метод Close автоматически не сохраняет данные текущей записи.

Можно использовать обработчик события BeforeClose для вызова метода Post:

procedure TForm1.Table1BeforeClose(DataSet: TDataSet); begin if (Table1.State=dsInsert) or (Table1.State=dsEdit) then Table1.Post; end;

В данном примере сначала осуществляется проверка, в каком режиме находится набор данных Table1, при помощи значения свойства State. Если он находится в режиме вставки новой записи (dsInsert) или редактирования текущей записи (dsEdit), то перед закрытием набора данных все внесенные изменения сохраняются.

ВНИМАНИЕ. При выходе из приложения несохраненные данные теряются, и обработчик события BeforeClose не вызывается.

К обработке события AfterClose можно прибегать для выдачи пользователю сообщения о закрытии набора данных.

<== предыдущая лекция | следующая лекция ==>
Общие свойства компонентов Table и Query | Режимы наборов данных. В примере использования события BeforeClose мы упомянули о режиме набора данных (свойстве State)
Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 280; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.