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

Лабораторные работы по Delphi

.pdf
Скачиваний:
63
Добавлен:
05.06.2015
Размер:
768.49 Кб
Скачать

Чтобы пользователь не смог поступить иначе, нужно запретить ввод данных в компоненту DBGrid1 и нажатие на кнопки DBNavigator2. Для этого необходимо выполнить следующие действия:

12.1.1. Завершите работу программы. Выберите компонент DBNavigator1 на форме. Перейдите на вкладку Events инспектора объектов.

12.1.2. Дважды щелкните правой кнопкой мыши в строке

BeforeAction. В окне MyExUnitDB.pas дополните процедуру Form1.DBNavigator1BeforeAction следующим фрагментом: if ((Button=nbInsert) or (Button=nbEdit)) then

begin DBNavigator2.Enabled:=false; DBGrid1.Enabled:=false;

end;

if Button=nbPost then begin

DBNavigator2.Enabled:=true; DBGrid1.Enabled:=true;

end;

12.1.3. Сохраните изменения и запустите программу.

12.2. Нажмем кнопку «Плюс» на панели нижнего навигатора по записям. Создается новая запись в таблице Tel.

Введем в ячейку «Номер» номер телефона.

Выберем в ячейке «Тип», элемент «дом.» из выпадающего списка. 12.3. Нажмем кнопку «Плюс» на панели нижнего навигатора по записям. Кнопку «Галочка» нажимать для сохранения записи необязательно: при вводе последовательно нескольких телефонов и переходе на новую запись данные о телефоне автоматически сохраняются в таблице, и в этой же таблице создается новая запись. Введем информацию еще об одном телефоне. Нажмем кнопку «Галочка» на панели нижнего навигатора по записям. Созданная запись о телефоне сохраняется в таблице Tel.

13. Завершим работу программы нажатием стандартной кнопки закрытия окна на границе формы.

14. Сохраним все изменения проекта с помощью команды File|Save All.

Примечания:

1. Если нужно будет удалить какую-либо запись из компоненты DBGrid1, следует выделить соответствующую строку и нажать у нижнего навигатора кнопку «Минус». Для изменения же какой-либо записи компоненты DBGrid1 следует выделить эту запись, нажать кнопку «Стрелка вверх» нижнего навигатора, выполнить соответствующие изменения и нажать кнопку «Галочка».

2.Для удаления записи из таблицы People необходимо предварительно удалить все записи из таблицы Tel, относящиеся к записи, удаляемой из таблицы People. Чтобы не выполнять предварительное удаление записей

«вручную» можно дополнить процедуру Form1.DBNavigator1BeforeAction

следующим фрагментом: if Button=nbDelete then begin

Table2.First;

while not Table2.Eof do begin

Table2.Delete;

end;

end;

Как это осуществить, уже описывалось в п. 12.1.

Создание форм с помощью эксперта-построителя форм БД - FormWizard

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

Вызвать данный эксперт можно командой меню DataBase|FormWizard

или операцией File|New|Bisuness|DataBase Form Wizard.

1. Определение общего типа формы БД и источника данных

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

Группа переключателей Form Options (Вид Формы) определяет тип формы и предлагает два варианта:

Create simple form (Создать простую форму) - форма, в которой будет отображена информация из одной таблицы;

Create master detail form (Создать форму с подформой) - форма, которая может содержать информацию из двух связанных таблиц. Группа переключателей DataSet Options (Выбор источника данных) -

определяет, какой объект будет являться источником данных для создаваемой формы:

Create a form using TTable object (Создать форму на основе компоненты Table) - форма будет создана на основе таблицы БД;

Create a form using TQuery object (Создать форму на основе компоненты Query) - форма в качестве источника данных будет использовать запрос на языке SQL.

2. Выбор таблицы с данными

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

3. Выбор полей таблицы

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

Это окно содержит два списка. В левом находятся поля, которые не входят в создаваемую форму, а в правом - выбраны для отображения в

форме. Порядок следования полей можно менять с помощью кнопок с синими стрелками.

4. Выбор способа размещения полей

Здесь возможны следующие варианты:

Horizontally (Горизонтальное) - поля размещаются слева на право; Vetically (Вертикальное) - поля размещаются сверху вниз;

In a grid (Табличное) - данные представляются в виде таблицы (используется DBGrid).

Эксперт предложит диалоговое окно в зависимости от выбранного типа формы:

если создается форма с подформой и были определены свойства для основной формы, необходимо произвести действия, описанные в п.2-

п.4;

если этот пункт был достигнут при определении свойств подформы, необходимо определить поля, связывающие основную форму с подформой (п.6);

если была выбрана простая форма, то необходимо определить характеристики окна БД (п.7).

5. Определение расположения названий полей

Здесь возможны следующие варианты: Left (Слева) - слева от полей;

Top (Сверху) - над полями.

6. Размещение связанных полей

Это окно доступно лишь в случае создания формы с подформой. В верхней части диалогового окна находится выпадающий список Availabel Indexes (Доступные индексы), в котором содержатся все индексы источника данных для подформы.

Окно также содержит 3 списка. В левом, Detail Fields (Поля подчиненной формы), находится список полей, которые не связаны, но могут быть связанными в подформе. В правом списке, Master Fields (Поля основной формы), - находится список полей, которые также не связаны, но могут быть связанными в основной форме. Для определения связанных полей нужно выбрать по одному элементу из этих списков, затем нажать кнопку Add (Добавить). После этого в нижнем списке, Joined Fields (Связанные поля), появится строка, содержащая выбранные поля, которые уже являются связанными.

Кнопка Clear (Очистить) полностью очищает нижний список. Кнопка Delete (Удалить) позволяет отменить связывание для определенной пары полей.

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

7. Характеристики окна формы БД

Выключатель Generate a main form (Создать главную форму) указывает на необходимость сделать создаваемое окно формы БД основным в проекте.

Группа Form Generation (Содержание формы) определяет, где должны находиться создаваемые неотображаемые компоненты Tabel (Query) и DataSource. Для этого предлагается выбрать один из следующих вариантов:

Form Only (Создание только формы) - будет создано только одно окно формы БД, и в нем будут отображены все объекты.

Form and DataModule (Создание формы и окна «DataModule») - будет создаваться окно формы БД с отображаемыми компонентами и дополнительное окно «DataModule» c неотображаемыми объектами.

При создании формы БД в нее будет добавлен объект Navigator.

Для запуска процедуры создания окна с формой БД и завершения работы с экспертом требуется нажать кнопку Finish (Закончить). После создания формы БД ее можно далее корректировать обычными способами.

Пример 2. Попробуйте самостоятельно создать форму БД с подформой для работы с информацией из БД «Телефонная книжка» с помощью возможностей Form Wizard.

Сравните два метода создания формы (метод из Примера 1 и метод из

Примера 2).

Редактор полей (Fields Editor) и поле набора данных (Класс TField)

Fields Editor помогает вам связывать заказные объекты с некоторыми или всеми полями таблицы. Связав заказной объект с полем, вы можете управлять тем, как поле отображается, форматами, контролерами допустимости значения и данными ввода. Fields Editor также позволяет добавлять новые поля в таблицы во время выполнения и рассчитывать значения, которые будут появляться в новых полях. Эта последняя процедура называется вычисляемыми полями.

Пример 3. Работа с редактором полей при создании формы БД «Телефонная книжка»

1. Загрузим проект, помещенный в файле MyExUnitDB.dpr, используя команду главного меню File|Open.

2. Будем выводить дополнительно порядковые номера записей (значение поля IDPeople). При этом будем выводить в виде трехзначного числа, независимо от фактического количества цифр, и снабжать выведенную информацию пояснением «Порядковый номер». Для этого выполним следующие действия:

2.1. На форме Form1 активизируем компоненту Table1. В появившийся редактор полей перенесем все поля таблицы, используя команду локального меню редактора Add Fields. В списке полей, появившемся в редакторе, выделим поле IDPeople. В инспекторе объектов появятся характеристики этого поля. В свойство DisplayFormat поместим следующую строку:

‘Порядковый номер: ‘000

2.2.Используя страницу DataControls палитры компонент, поместим в верхний левый угол формы Form1, перед навигатором, компоненту DBEdit. Несколько увеличим компоненту по горизонтали, чтобы в ней полностью разместилась выводимая информация. Используя инспектор объектов, зададим ее свойству DataSource значение DataSource1, а в свойстве DataField выберем из списка значение IDPeople. Если операции выполнены правильно, в строке ввода DBEdit5 должна появиться соответствующая информация.

3.В предыдущих примерах мы выводили поле «Пол» с помощью компоненты DBCheckBox1, что весьма не наглядно. Выведем это значение словами «Мужской» или «Женский». Для этого выполним следующие операции:

3.1.На форме Form1 активизируем компоненту Table1. В списке полей выделим поле Sex. В инспекторе объектов появятся характеристики этого поля. В свойство DisplayValues поместим следующую строку:

Мужской;Женский

3.2.Удалим из формы Form1 компоненту DBCheckBox1, выделив ее и нажав клавишу Del. Используя страницу DataControls палитры компонент, поместим на ее место компоненту DBComboBox (Комбинированная строка ввода значений в БД) и слегка уменьшим ее размер по горизонтали. Используя инспектор объектов, зададим ее свойству DataSource значение DataSource1, а в свойстве DataField выберем из списка значение Sex. Если операции выполнены правильно, в строке ввода DBComboBox1 должна появиться соответствующая информация («Мужской» или «Женский»).

В инспекторе объектов для компоненты DBComboBox1 активизируем мышью свойство Items и в появившемся редакторе строк введем следующие строки:

Мужской

Женский Работу с редактором завершим нажатием кнопки ОК.

3.3.Используя страницу Standart, поместим слева от комбинированной строки ввода компоненту Label. Используя инспектор объектов, зададим ее свойству Caption значение «Пол ».

4.Теперь выберем формат даты для вывода дня рождения человека. Для этого выполним следующие действия:

4.1.На форме Form1 активизируем компоненту Table1. В списке полей выделим поле Birthday. В инспекторе объектов появятся характеристики этого поля.

4.2.Выделим в инспекторе объектов свойство DisplayFormat этого поля и введем в него какой-либо формат, например «dddddd». Завершим ввод формата нажатием клавиши Enter.

5.Запустим программу с помощью команды главного меню Run|Run. На экране будут отображены все внесенные нами изменения.

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

7.Завершим работу программы, нажав стандартную кнопку закрытия окна на границе формы.

8.Сохраним все изменения в проекте с помощью команды главного меню

File|Save All.

Задание к лабораторной работе № 2

1. Используя исходную БД, спроектируйте экранную форму (приложение), включив в нее все поля и оформив некоторые из них следующим образом:

Вариант 1.

Цвет – комбинированная строка ввода значений поля БД (DBComboBox).

Вариант 2.

Название танца и оценка – комбинированная строка ввода значений поля БД

(DBComboBox).

Вариант 3.

Номер группы - комбинированная строка ввода значений поля БД

(DBComboBox).

Вариант 4.

Цех - комбинированная строка ввода значений поля БД (DBComboBox). Дату поступления на работу необходимо вывести в формате, например:

15 Апрель 1998 г.

Вариант 5.

Цех - комбинированная строка ввода значений поля БД (DBComboBox). Тип изделия – набор варианта значения поля БД (DBRadioGroup).

Вариант 6.

Цех - набор варианта значения поля БД (DBRadioGroup).

Вариант 7.

Год установки телефона необходимо вывести в формате, например:

1990 год.

Тип установки телефона – выключатель для полей БД логического типа

(DBCheckBox).

Вариант 8.

Возрастная категория детей - комбинированная строка ввода значений поля БД (DBComboBox).

Вариант 9.

Пол – комбинированная строка ввода значений поля БД (DBComboBox). Семейное положение - набор варианта значения поля БД (DBRadioGroup).

Вариант 10.

Пол – комбинированная строка ввода значений поля БД (DBComboBox). Год установки телефона необходимо вывести в формате, например:

1980 год.

Вариант 11.

Тип самолета - комбинированная строка ввода значений поля БД

(DBComboBox).

Вариант 12.

Срок поставки обуви необходимо вывести в формате, например:

15 Апрель 1998 г.

Вариант 13.

Дату приема в команду необходимо вывести в формате, например: 15 Апрель 1998 г.

Название команды - набор варианта значения поля БД (DBRadioGroup).

Вариант 14.

Признак проживания студента в общежитии - выключатель для полей БД логического типа (DBCheckBox).

Выбор дисциплины - выключатель для полей БД логического типа

(DBCheckBox).

Вариант 15.

Дату перечисления необходимо вывести в формате, например: 15 Апрель 1998 г.

Признак того, является ли организация коммерческой - выбор варианта значения поля БД (DBRadioGroup).

Вид затрат перечисления - комбинированная строка ввода значений поля БД

(DBComboBox).

Вариант 16.

Дату поступления и дату продажи необходимо вывести в формате,

например:

15 Апрель 1998 г.

Вариант 17.

Дату изготовления необходимо вывести в формате, например: 15 Апрель 1998 г.

Вариант 18.

Вид спорта - комбинированная строка ввода значений поля БД

(DBComboBox).

Вариант 19.

Пол ребенка - набор варианта значения поля БД (DBRadioGroup). Дату рождения ребенка необходимо вывести в формате, например:

15 Апрель 1998 г.

Вариант 20.

Пол - выключатель для полей БД логического типа (DBCheckBox).

Тип организации - комбинированная строка ввода значений поля БД

(DBComboBox).

Вариант 21.

Группа - комбинированная строка ввода значений поля БД (DBComboBox). Дисциплина - комбинированная строка ввода значений поля БД

(DBComboBox).

Дату экзамена необходимо вывести в формате, например: 15 Апрель 1998 г.

Вариант 22.

Пол - комбинированная строка ввода значений поля БД (DBComboBox).

Дату рождения и дату поступления необходимо вывести в формате,

например:

15 Апрель 1998 г.

Вариант 23.

Семейное положение - набор варианта значения поля БД (DBRadioGroup). Дату прохождения медкомиссии необходимо вывести в формате, например:

15 Апрель 1998 г.

Вариант 24.

Вид изделия - комбинированная строка ввода значений поля БД

(DBComboBox).

Дату поступления необходимо вывести в формате, например: 15 Апрель 1998 г.

Разряд - набор варианта значения поля БД (DBRadioGroup).

2. Создайте и разместите на форме вычисляемое(ые) поле, содержащее следующую информацию:

Вариант 1.

Количество всех поставщиков и имеющихся на складах деталей (видов деталей).

Вариант 2.

Количество участников конкурса.

Вариант 3.

Количество студентов, не выполнивших задание.

Вариант 4.

Сумма заработной платы, приходящейся на цех.

Вариант 5.

Количество изготовленных изделий каждого типа за неделю.

Вариант 6.

Количество рабочих во всех цехах.

Вариант 7.

Количество не спаренных телефонов со льготами и без льгот.

Вариант 8.

Общее количество мест, откуда поступают игрушки.

Вариант 9.

Количество студентов, сдавших сессию на все пятерки.

Вариант 10.

Количество теннисистов из России.

Вариант 11.

Количество занятых мест на каждый рейс.

Вариант 12.

Количество пар обуви определенного размера.

Вариант 13.

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

Вариант 14.

Средний балл успеваемости в группе.

Вариант 15.

Общие суммы перечисления в коммерческие и некоммерческие организации.

Вариант 16.

Количество непроданного товара (по каждой партии).

Вариант 17.

Общая стоимость всех единиц определенного лекарства.

Вариант 18.

Число ветеранов по каждому виду спорта.

Вариант 19.

Количество мальчиков и количество девочек в роддоме.

Вариант20.

Количество слушателей, не сдавших хотя бы одну дисциплину.

Вариант 21.

Количество студентов, получающих стипендию.

Вариант 22.

Количество больных, поступивших в тяжелом состоянии.

Вариант 23.

Количество женатых и неженатых призывников.

Вариант 24.

Количество изделий каждого вида.

3. Попробуйте создать такую же экранную форму (приложение) с помощью эксперта построителя форм БД – FormWizard.

Лабораторная работа № 3 Проектирование отчетов

Как правило, БД используется для обработки информации. Результаты обработки отображаются в отчетах. Отчет – это документ, который распечатывается на принтере, чтобы затем на его основе принимать решения. В Delphi отчет представляет собой специально оформленную информацию из БД и предназначен для наглядного ее отображения в виде особой формы. Его можно просмотреть на экране, а затем распечатать на принтере. Подобная форма содержит специальные компоненты, которые определяют данные и внешний вид отчета при печати. Перевод представления данных из формы в отчет осуществляется с помощью генератора отчетов. В пакете Delphi 3.0 имеется генератор отчетов QuickReport 2.0, который позволяет просматривать, сохранять в файл, читать из файла и печатать отчет.

Отчеты, так же как и формы, могут быть разных типов:

Список – выводит информацию набором строк, каждая из которых представляет одну запись.

В бланке одна запись размещается на одной странице.

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

Отчет печати почтовых этикеток позволяет разместить на листе в отчете

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

При создании отчета можно выделить несколько стадий.

Стадия подготовки отчета. На этой стадии выбираются компоненты отчета и их параметры.

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

Стадия печати отчета. На этой стадии осуществляется вывод отчета на принтер.

Создание отчета в БД

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

Все это создается с помощью компонент, описанных выше.

Пример № 1. Создание отчета для печати содержимого БД «Телефонная книжка»

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