Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие ТБД.doc
Скачиваний:
26
Добавлен:
04.09.2019
Размер:
1.92 Mб
Скачать

События, инициируемые для наборов данных

При работе с наборами данных могут инициироваться следующие события:

  • AfterCancel и BeforeCancel - происходит после/до отмены в приложении всех изменений, сделанных для текущей записи.

  • AfterClose и BeforeClose - происходит после/до закрытия набора данных и перевода базы данных в состояние dsInactive.

  • AfterDelete и BeforeDelete - инициируется после/до удаления приложением текущей записи, перевода набора данных в состояние dsBrowse и перемещения позиции курсора на предыдущую запись.

  • AfterEdit и BeforeEdi - происходит после/до начала редактирования приложением текущей записи.

  • AfterInsert и BeforeInsert - происходит после/до того как приложение вставит новую запись.

  • AfterOpen и BeforeOpen - происходит после/до того как приложение откроет набор данных, но до того, как какие-либо доступные данные будут отображены.

  • AfterPost и BeforePost - происходит до завершения переноса значений активной записи в базу данных или внутренний кэш.

  • AfterRefresh и BeforeRefresh - происходит после/до обновления набора данных.

  • AfterScroll и BeforeScroll - происходит после/до перемещения позиции курсора на другую запись.

  • OnCalcFields - происходит при открытии набора данных, перевода его в состояние dsEdit, перемещении фокуса ввода от одного компонента к другому или от одного столбца к другому, при изменениях записи или при извлечении записи из базы данных, но только в том случае, если значение свойства AutoCalcFields равно True;

  • OnDeleteError - инициируется, если при попытке удаления строки произошла ошибка - было брошено исключение.

  • OnEditError - инициируется, если при попытке изменения или вставки записи произошла ошибка - было брошено исключение.

  • OnPostError - инициируется, если при попытке передать изменение или вставку новой записи происходит ошибка - бросается исключение.

  • OnFilterRecord - происходит при изменении активной записи и только в том случае, если свойство State набора данных установлено равным dsFilter, а свойство Filtered равно True. Чтобы запись была включена в набор данных, для нее следует установить параметр Accept равным True.

  • OnNewRecord - происходит при вставке или добавлении новой записи.

4.4.4.Применение многозвенных архитектур

Применение многозвенной архитектуры позволяет вынести бизнес-логику работы с данными в приложение-сервер.

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

Применение трехзвенной архитектуры приведено на следующей схеме.

Рис. 78. Схема работы с базами данных для трехзвенных архитектур в среде Delphi

Такая архитектура позволяет реализовывать доступ к серверу БД из приложения-сервера, не имея на клиентских машинах никаких драйверов доступа к базе данных.

Большое преимущество использования такой архитектуры заключается также в возможности изменения серверной части без необходимости перетрансляции клиентского приложения.

Приложение-сервер получает набор данных стандартным способом - через один из компонентов набора данных, таких как TTable или Tquery, и пересылает его с помощью компонента TDataSetProvider компоненту TClientDataSet в приложение-клиент. Приложение-сервер реализуется как удаленный модуль данных, представляющий из себя СОМ-объект. Доступ к такому компоненту может быть выполнен посредством DCOM с любого удаленного компьютера.