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

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

Опишите в среде СУБД Access структуру перечисленных таблиц, создайте схему данных и заполните таблицы информацией в соответствии со следующими условиями:

·  информация в БД должна быть взята из четырех-пяти квитанций, заказы должны быть срочные и обычные;

·  две из этих квитанций должны быть оформлены в один и тот же день (для разных заказчиков);

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

·  каждый из справочников БытоваяТехника и Прейскурант должен содержать не менее четырех записей.


ЛАБОРАТОРНАЯ РАБОТА № 8. Фильтрация информации в БД НА ОСНОВЕ технологии ADO

Цель работы: получение навыков использования технологии ADO для обеспечения универсального доступа к данным из СУБД Access с применением фильтров.

Задание. Создайте копию папки, содержащей проект лабораторной работе № 7, и переименуйте эту папку. В окно формы для каждой главной таблицы добавьте поле для ввода шаблона значения некоторого атрибута. Включите в проект процедуры, обеспечивающие фильтрацию записей соответствующей таблицы по введенному шаблону. Кроме того, включите в проект процедуры, обеспечивающие фильтрацию записей подчиненной таблицы при перемещении указателя текущей записи в главной таблице.

Пример выполнения работы


1.    Модификация окна формы. Поместим в окно формы, приведенного на рис. 33, поля для ввода наименования клиента, наименования товара и номера заказа. Полученное окно формы приведено на рис. 40.

Рисунок 40Окно формы для реализации фильтрации таблиц БД

2. 


Создание процедур для фильтрации по шаблону. Двойным щелчком по полю Edit1 создадим заготовку процедуры для обработки события Change (изменить). Заполним ее операторами, обеспечивающими фильтрацию таблицы Клиенты по полю НаимКл в соответствии с шаблоном, находящимся в поле Edit1. Полученный текст процедуры приведен на рис. 41.

Рисунок 41Процедура фильтрации таблицы Клиенты по полю НаимКл в соответствии с шаблоном из Edit1

В тексте процедуры символы «#39» представляют собой код одинарной кавычки и используются для того, чтобы текст после оператора like оказался заключенным в эти кавычки. Вместо символов «#39» можно написать три одинарные кавычки подряд. Символ «%» по синтаксису языка Delphi означает последовательность произвольной длины из любых символов. Таким образом, этот символ соответствует символу «*» в Windows.

Аналогичным образом создаются процедуры фильтрации таблицы Товары по полю НаимТов и таблицы Заказы по полю НомЗак в соответствии с шаблонами из полей Edit2 и Edit3.

3.    Проверка работы фильтрации по шаблону. Запустим проект на выполнение и введем последовательно в поля Edit1, Edit2 и Edit3 шаблоны для фильтрации. Окно приложения с результатом фильтрации приведено на рис. 42. До фильтрации содержимое таблиц БД приведено на рис. 38.


Рисунок 42Окно приложения при фильтрации трех таблиц в соответствии с введенными шаблонами


4.      Создание процедур для фильтрации подчиненных таблиц. Теперь создадим процедуру, которая будет отфильтровывать записи подчиненной таблицы Заказы в соответствии с положением указателя текущей записи таблицы Клиенты. Для этого надо создать заготовку процедуры для события AfterScroll объекта ADOTable1. Текст искомой процедуры приведен на рис. 43.

Рисунок 43Процедура фильтрации таблицы Заказы в соответствии с положением указателя текущей записи в таблице Клиенты

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