
- •Лабораторная работа №6 (8 часов) Работа с локальными базами данных и несвязанными таблицами
- •6.1. Приложение для работы с локальной базой данных
- •6.1.1. Цель работы
- •6.1.2. Задание на выполнение работы
- •6.1.3. Процесс разработки приложения
- •6.1.4. Создание псевдонима базы данных
- •6.1.5. Разработка структуры записи таблицы базы данных
- •6.1.6. Разработка основной формы и ее компонентов для работы с бд
- •6.1.6.1. Размещение и настройка основных компонентов
- •6.1.6.2. Размещение и настройка панелей
- •6.1.6.3. Настройка компонента dbGrid1
- •6.1.6.4. Формирование вычисляемого поля
- •6.1.6.5. Дополнение формы окнами из редактора полей таблицы
- •6.1.7. Формирование основного меню
- •6.1.8. Методы подменю Показать данные
- •6.1.9. Методы для сортировки данных
- •6.1.10. Методы для поиска данных
- •6.1.11. Выполнение команд подменю ‘Вычислить:’
- •6.1.12. Метод команды меню Трафик' и настройка графика
- •6.1.13. Выполнение команд подменю Отчет
- •6.1.13.1. Формирование отчета
- •6.1.13.2. Методы подменю Отчет
- •6.1.14. Листинги примера проекта
- •6.1.15. Варианты заданий на работу с локальными базами данных
- •6.1.16. Контрольные вопросы
- •6.2. Приложение для соединения данных двух таблиц 1:1
- •6.2.1. Цель и задание на выполнение работы
- •6.2.2. Процесс разработки приложения
- •1) Установка русификатора для работы с таблицами типа Paradox7;
- •6.2.4. Контрольные вопросы
- •6.3. Приложение для формирования, слияния и разъединения однотипных таблиц баз данных
- •6.3.1. Цель и задание на выполнение работы
- •6.3.2. Процесс разработки приложения
- •6.3.3. Метод для работы с данных двух таблиц
- •6.3.4. Контрольныевопросы
6.1.8. Методы подменю Показать данные
Отбор данных для показа производится с помощью фильтров компонентов Table1 и Query1 и с помощью статического и динамических запросов компонентов Query2 и Query3. Пример текста модуля основной формы дан в листинге 6.1.
Показ всех данных производится с помощью метода N8Click. Для этого устанавливается запрет фильтрации данных с помощью компонента Table1 оператором: Table1.Filtered:= False; - в случае, если она была разрешена.
Затем формируется подключение данных к компонентам просмотра с помощью Table1 оператором: DataSource1.DataSet := Table1;
Отбор данных по запросам производится с помощью компонентов Query1,Query2 и Query3.
Отбор данных с заранее заданным условием отбора данных производится методом N11Click с помощью статического запроса компонента Query1. Для этого в свойстве SQL компонента формируется текст статического запроса оператором:
SELECT * FROM Stud1 WHERE Stud1.NZ > 150
где Stud1 - имя файла таблицы БД.
Затем устанавливается свойство Query1:Active = True.
При выборе команды пункта меню ‘Показать данные - отбора запросами - с NZ>150’ (с именем N11) для отбора данных активизируется компонент Query1 и производится подключение данных к компонентам их просмотра с помощью Query1 операторами:
If Query1.Active = False THEN Query1.Active := True;
DataSource1.DataSet := Query1;
В процессе выполнения приложения производится также отбор данных по заданному значению номера зачетки:
по динамическому запросу (с помощью компонента Query2, пункт N12);
- с помощью динамически формируемого фильтра компонента Table1 (N13);
- с помощью динамически формируемого фильтра компонента Query1 (N14);
- с помощью динамически формируемого запроса компонента Query3 (N15).
Отбор данных для заданного значения NZ производится в 2 этапа: подготовка к отбору и выполнение операторов для реализации процесса отбора данных. Подготовка к отбору производится в методе N12Click. Это - один разделенный метод для всех перечисленных способов отбора. Для пунктов меню N13, N14, N15 он выбирается из списка методов для OnClick - события пунктов меню на странице Events.
В методе N12Click производится показ панели Рапеl2 с меткой (‘Введите номер зачетки:’) и компонентом MaskEdit1. При этом используется одно и то же окно для ввода требуемого значения номера зачетки или размера стипендии.
Кроме того, в этом методе устанавливается признак пункта меню, которым вызван метод. Это производится по значению свойства Tag пункта меню, которое определяет значение глобальной переменной J - признака способа отбора. Таким способом идентифицируется пункт меню. Значения свойства Tag соответствующих пунктов меню устанавливаются в процессе разработки приложения. Соответствие пунктов подменю ‘Показать данные’ и их значений свойства Tag дано в табл. 6.2.
Таблица 6.2. Соответствие наименований пунктов подменю и их значений свойства Tag = J
Наименование и назначение пункт меню |
J |
Отбор запросами - с заданным NZ (динамический запрос с Query2) |
1 |
Отбор фильтром - для таблицы (Filtr для Table1) |
2 |
Отбор фильтром - для Query (Filtr для Query1) |
3 |
Отбор запросами - с заданным запросом (SQL для Query3) |
4 |
После ввода требуемого значения номера зачетки и двойного щелчка в окне MaskEdit1 вызывается метод MaskEdit1DblClick, который в зависимости от значения J выполняет отбор данных.
Отбор данных по условию, которое формируется во время выполнения приложения, производится с помощью компонента Query2 с динамическим запросом (J=1). Для формирования динамического запроса надо в свойство SQL компонента Query2 ввести текст оператора отбора данных:
SELECT * FROM Stud1 WHERE Stud1.NZ > :TNZ
где TNZ - это формальный параметр, значение для которого можно ввести во время выполнения приложения; пробел перед TNZ недопустим.
После ввода текста свойства SQL надо вызвать EditingQuery2.Params - редактор его параметра - нажатием на многоточие свойства Params. Затем активизировать строку с именем параметра (TNZ); в Инспекторе объектов появятся его свойства. Установить его свойство DataType выбором из списка его значений. Например: DataType = ftInteger.
В методе MaskEdit1DblClick для пункта меню ‘отбора запросами - с заданным запросом’ (для J = 4) производится стирание текста прежнего запроса методом Query3.SQL.Clear;
Затем формируется новый запрос с использованием значения номера зачетки из окна MaskEdit1 оператором:
Query3.SQL.Add (‘SELECT * FROM Stud1 WHERE Stud1.NZ >’ + MaskEdit1.Text);
Для отбора данных с помощью фильтра компонента Table1 в окно MaskEdit1 вводится требуемое значение номера зачетки. По двойному щелчку в окне MaskEdit1 вызывается метод MaskEdit1DblClick, в котором по значению J = 2 устанавливается фильтр для работы с компонентом Table1 операторами:
DataSource1.DataSet := Table1;
Table1.Filtered := True;
Table1.Filter := NZ >' + MaskEdit1.Text;
Аналогично устанавливается фильтрация данных с помощью компонента Query1. Дополнительно перед установкой фильтра Query1 производится отключение Query1 от БД оператором Query1.Close; а после установки фильтра - подключение Query1 к БД оператором Query1.Open;