Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 944

.pdf
Скачиваний:
3
Добавлен:
30.04.2022
Размер:
672.94 Кб
Скачать

4.Для компонента DataSource в свойстве установить значение ADOTable1, выбрав его из списка.

5.Выбрать вкладку Data Controls. Щелкнуть по кнопке DBGrid и в форме. Данный компонент служит для отображения записей набора данных в табличной форме. Можно изменить размер формы, растащив границы. Для данного компонента в свойстве DataSource устанавливают значение DataSource2 (это имя присвоено по умолчанию), выбрав его из списка.

6.Выделить компонент ADOTable1, в свойстве Active установить значение False. В свойстве MasterSource выбрать единственное имеющееся в нем значение DataSource1. Затем щелкнуть по правой части строки MasterFields в окне Инспектора Объектов и по появившейся в ней кнопке с тремя точками, чтобы раскрыть окно редактора связей.

7.В открывшемся окне в поле Detail Fields выбрать имя поля, по которому подчиненная таблица связана с главной таблицей. В окне Master Fields выбрать имя поля, по которому главная таблица связана с подчиненной таблицей. Щелкнуть по кнопке Add. Щелкнуть по кнопке ОК (рис. 6).

Рис. 6. Связывание двух таблиц при создании составной формы

19

8.Закрыть окно редактора связей. Для компонента ADOTable1 в свойстве Active установить значение True.

9.Щелкнуть по форме, в окне свойств выбрать вкладку Events, событие OnActivate и создать следующую процедуру

ADOTable1.Active := true;

10.Сохранить произведенные изменения.

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

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

Пример составной формы в режиме редактирования приведен на рис. 7.

Рис. 7. Составная форма

20

2.4. Редактирование формы

Удаление из формы автоинкрементного столбца. Этот столбец необходим для обеспечения уникальности записей и не несет никакой смысловой нагрузки. Его можно убрать из формы. Для этого поступают следующим образом.

Выделить компонент DBGrid. Вызвать на нем контекстное меню и выбрать пункт Columns Editor. На экране появится окно редактора столбцов. Для отображения в данном окне списка полей щелкают по кнопке Add All Fields. Выделить в окне нужное поле, вызвать контекстное меню и удалить его.

Редактирование и русификация названий столбцов в компоненте DBGrid. Выделить компонент DBGrid. Вызвать на нем контекстное меню и выбрать пункт Columns Editor. На экране появится окно редактора столбцов. Для отображения в данном окне списка полей щелкают по кнопке Add All Fields. Выделить в окне нужное поле. В окне Инспектора Объектов можно изменить следующие свойства.

Раскрыть список Title (щелчок по плюсу).

1.В поле Caption задать имя на русском языке.

2.В поле Color выбрать из списка цвет фона.

3.В поле Alignment выбрать способ выравнивания (например, taCenter – по центру).

Раскрыть список Font (щелчок по плюсу).

1.В поле Size выбрать размер шрифта.

2.В поле Color выбрать цвет символов.

Создание надписи. Перейти во вкладку Standard. Щелкнуть по кнопке Label и в форме, где будет надпись. В окне Инспектора Объектов задают:

встроке Caption русское название надписи;

встроке Aligment способ выравнивания (например, taCenter – по центру);

встроке Color цвет фона;

21

враскрывающемся списке Font и в поле Color выбирают цвет символов, в поле Size вводят размер;

всписке Style для нужного начертания устанавливают значение True;

встроке Transparent устанавливают True для прозрачного фона надписи.

Создание панели кнопок навигации. Перейти во вклад-

ку DataControls, щелкнуть по кнопке DBNavigator и в форме там, где будет панель с кнопками (например, под формой для каждой таблицы). Выделить компонент и в окне Инспектора Объектов в поле DataSourse выбрать значение DataSource1 (рис. 8).

 

 

 

 

 

 

 

 

 

 

1

2

3

4

5

6

7

8

9

10

Рис. 8. Кнопки панели навигации

Первая кнопка (First) устанавливает курсор на первую за-

пись.

Вторая кнопка (Prior) устанавливает курсор на предыдущую запись.

Третья кнопка (Next) устанавливает курсор на следующую запись.

Четвертая кнопка (Last) устанавливает курсор на последнюю запись.

Пятая кнопка (Insert) переводит набор данных в режим вставки новой записи.

Шестая кнопка (Delete) удаляет текущую запись.

Седьмая кнопка (Edit) переводит набор данных в режим редактирования.

Восьмая кнопка (Post) запоминает изменения, сделанные в текущей записи.

22

Девятая кнопка (Cancel) отменяет изменения, сделанные в текущей записи.

Десятая кнопка (Refresh) обновляет набор данных.

Создание кнопки выхода из формы. Перейти во вклад-

ку Standard. Щелкнуть по кнопке Button и в форме, где будет кнопка выхода. В окне Инспектора объектов в поле Caption набрать слово Выход. Перейти во вкладку Events. Дважды щелкнуть по строке onClick, при этом происходит переход в процедуру обработки событий, где необходимо набрать оператор:

Form1.Close;

Номер или имя формы могут быть другими.

Проверить работу формы (F9). Осуществить возврат в ре-

дактор (Ctrl+F2).

Создание в форме поля с фиксированным списком.

Создание поля с фиксированным списком осуществляется следующим образом:

на компоненте DBGrid вызвать контекстное меню и вы-

брать пункт Columns Editor…;

выделить в окне имя поля; для данного поля в окне свойств в списке PickList щелкнуть по кнопке …;

в окне String List Editor набрать список, например, ФАЭМ РТФ ЕГФ

после набора списка щелкнуть по кнопке ОК.

Создание в форме поля с раскрывающимся списком, который выбирается из другой таблицы.

Создание поля со списком осуществляется следующим образом:

щелкнуть по форме, в окне свойств выбрать вкладку

Events, событие OnActivate;

23

для выбранного события создать процедуру (обозначения: ADOTable1 – таблица, содержащая поле, из которого формируется список, предполагается, что таблица находится на модуле данных; DBGrid1.Columns.Items[0] – столбец с номером 0, для которого создают список; PickList – список значений)

имя_модуля_данных.ADOTable1.First;

(*установка указателя на первую запись таблицы*) while not имя_модуля_данных.ADOTable1.Eof do (*цикл – пока не конец таблицы*)

begin

(*формирование списка значений из поля Nomer_bil*) DBGrid1.Columns.Items[0].PickList.add (имя_модуля_данных.ADOTable1.fieldByName('Nomer_bil

').Value);

имя_модуля_данных.ADOTable1.Next;

(* переход на следующую строку таблицы *) end; (* конец цикла *)

3.СОЗДАНИЕ ЗАПРОСОВ

3.1.Создание запросов на выборку данных

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

1.Создать или выбрать форму для реализации запроса (создание - кнопка New Form на панели инструментов (4-я слева), выбор – кнопка Veiw Form (2-я слева на панели инструментов)). В свойствах формы в поле Name можно задать имя, например, Query1Form5.

2.Расположить на модуле данных компонент ADOQuery (панель ADO). Для данного компонента настроить следующие свойства: в свойстве Connection выбрать ADOConnection1; в свойстве SQL щелкнуть по кнопке и в открывшемся окне набрать запрос на языке SQL; в свойстве Active выбрать true.

24

Во вкладке Events модуля данных для события onCreate в процедуре обработки события дописать:

ADOQuery1.Active := true;

Номер компонента может быть отличным от единицы.

3.Расположить на форме для реализации запроса компо-

ненты DataSource (панель Data Access), DBGrid (панель Data Controls).

4.В модуле, соответствующем созданной форме для реализации запросов, для доступа к компонентам модуля данных в разделе implementation выставить uses unit2 (если модуль данных был создан вторым).

5.Установить для компонента DataSource – в свойстве DataSet имя компонента на модуле данных, реализующего запрос, (например, имя_модуля_данных.ADOQuery1 (номер компонента может быть другим)), для DBGrid – в свойстве

DataSource значение DataSource1.

6.Чтобы выполнить запрос, необходимо в модуле данных установить для ADOQuery в свойстве Active значение True. Результат выполнения запроса будет виден в компоненте DBGrid на форме для реализации запроса.

7.Сохранить произведенные изменения (File, Save All).

Примеры запросов на выборку данных.

Выбрать все поля из таблицы Students, где поле Фамилия (Fio) начинается с буквы Б:

Select S.* from Students S where Fio like ‘Б%’;

Выбрать все поля из таблицы Students, где поле Фамилия (Fio) начинается с буквы Б или В:

Select S.* from Students where (Fio like ‘Б%’) or (Fio like

‘В%’);

25

Выбрать все поля из таблицы Students, где поле фамилия совпадает со значением Антонов:

Select S.* from Students S where Fio = ‘Антонов’;

Выбрать все поля из таблицы Students, где стипендия рав-

на 600:

Select S.* from Students S where Stip=600;

Выбрать все поля из таблицы Students и поля Факультет (Fact) и Специальность (Spec) из таблицы Gruppa, таблицы связаны по полю Шифр группы (Shifr_gr):

Select S.* , G.Fact, G.Spec from Students S, Gruppa G where S.Shifr_gr = G.Shifr_gr;

3.2. Создание запроса с вычисляемым полем

Для создания запроса с вычисляемым полем поступают следующим образом.

1.Создать или выбрать форму для реализации запроса (создание – кнопка New Form на панели инструментов (4-я слева), выбор – кнопка Veiw Form (2-я слева на панели инструментов)). В свойствах формы в поле Name можно задать имя, например, Query2Form.

2.Расположить на модуле данных компонент ADOQuery (панель ADO). Для данного компонента настроить следующие свойства: в свойстве Connection выбрать ADOConnection1; в свойстве SQL щелкнуть по кнопке и в открывшемся окне набрать запрос на языке SQL; в свойстве Active выбрать true.

Во вкладке Events модуля данных для события onCreate в процедуре обработки события дописать:

ADOQuery1.Active := true;

Номер компонента может быть отличным от единицы.

26

3.Расположить на форме для реализации запроса

DataSource (панель Data Access), DBGrid (панель Data Controls).

4.В модуле, соответствующем созданной форме для реализации запросов, для доступа к компонентам модуля данных в разделе implementation выставить uses unit2 (если модуль данных был создан вторым).

5.Установить для компонента DataSource – в свойстве DataSet имя компонента на модуле данных, реализующего запрос, (например, имя_модуля_данных.ADOQuery1 (номер компонента может быть другим)).

Установить для DBGrid – в свойстве DataSource значе-

ние DataSource1.

6.Чтобы выполнить запрос, необходимо в модуле данных установить для ADOQuery в свойстве Active значение True. Результат выполнения запроса будет виден в компоненте DBGrid на форме для реализации запроса.

7.Сохранить произведенные изменения (File, Save All).

Пример 1. Создать запрос с вычисляемым полем, данные выбираются из двух таблиц Tovary и Prihod, которые связаны между собой по полю Tovar. В запрос включить поля DatPrih, Tovar, Kolvo из таблицы Prihod и поле Zena из таблицы Tovary:

SELECT P.DatPrih, P.Tovar, P.Kolvo, T.Zena,

(P.Kolvo * T.Zena) As Stoim

FROM Tovary T, Prihod P

WHERE T.Tovar = P.Tovar;

Запрос вычисляет стоимость товара, умножив количество (Kolvo) на цену (Zena). Вычисляемое поле получает имя Stoim.

Конструкция FROM Tovary T, Prihod P задает для таблиц вторые имена Т и Р.

Конструкция WHERE T.Tovar = P.Tovar задает условие соединения двух таблиц.

27

Пример 2. Создать запрос с вычисляемым полем по таблице Сотрудники (выбрать все поля) и добавить вычисляемое поле «Общий оклад». Поле «Общий оклад» вычисляется по формуле Оклад * (100 + Надбавка)/ 100.

Select S.*, Okl*(Okl+Nadb)/100 As Ob_Okl

From Sotrudniki S;

3.3. Создание запроса с групповыми вычислениями

Запрос с групповыми вычислениями сортирует записи по полям группировки и для каждой группы записей с одинаковыми значениями в полях группировки производит вычисления по полям, указанным с групповыми функциями.

Создание запроса с групповыми вычислениями осуществляется следующим образом.

1.Создать или выбрать форму для реализации запроса (создание - кнопка New Form на панели инструментов, 4-я слева на панели инструментов, выбор – кнопка Veiw Form (2-я слева на панели инструментов)). В свойствах формы в поле Name можно задать имя, например, Query3Form.

2.Расположить на модуле данных компонент ADOQuery (панель ADO). Для данного компонента настроить следующие свойства: в свойстве Connection выбрать ADOConnection1; в свойстве SQL щелкнуть по кнопке и в открывшемся окне набрать запрос на языке SQL; в свойстве Active выбрать true.

Во вкладке Events модуля данных для события onCreate в процедуре обработки события дописать:

ADOQuery1.Active := true;

Номер компонента может быть отличным от единицы.

28