страница 1 страница 2 страница 3 ... страница 5 | страница 6
2. Сразу же сохраним форму Form1 в файле MyExunitDB.pas, а сам проект - в файле MyExampleDB.dpr. Для этого выполним команду главного меню File|Save Project As. При этом также появится окно выбора имени файла, в котором выберем для модуля папку, зададим модулю имя MyExUnitDB, после этого зададим проекту имя MyExampleDB.
3. Поместим на форму Form1 компоненты для связи с таблицей БД, находящейся в файле People.db.
3.1. В палитре компонент откроем страницу DataAccess (Доступ к данным) и перенесем с помощью мыши на форму Form1 компоненту Table (Таблица). Затем выберем свойство TableName и для него зададим значение People.db, устанавливая связь приложения с таблицей БД People.db. Для того чтобы отображаемые компоненты могли выводить на экран данные из этой таблицы, зададим свойству Active компоненты Table1 значение True.
3.2. С этой же страницы палитры компонент с помощью мыши перенесем на форму Form1 компоненту DataSource (Источник данных). Она обеспечивает связь отображаемых компонент с набором данных. Зададим для свойства DataSet компоненты DataSource1 значение Table1. После этого отображаемые компоненты, размещение которых в проекте будет описано ниже, получат доступ к данным из таблицы БД People.db. Расположение компонент в модуле не существенно.
4. Поместим на форму Form1 компоненты для связи с таблицей БД, находящейся в файле Tel.db, для чего выполним операции, аналогичные операциям в предыдущем пункте, только компоненты Table2 и DataSource2 будут связаны с таблицей Tel.db через свойство DatabaseName и DataSet соответственно.
5. Установим взаимосвязь между наборами данных для создания формы с
подформой, отображающей данные из двух таблиц БД. Для этого выделим компоненту Table2 на форме Form1. Установим для ее свойства MasterSource значение DataSource1. Активизируем мышью значение свойства MasterFields этой же компоненты. В комбинированной строке ввода Available Index (Используемые индексы) выберем значение IDPeopleIndex, т.к. взаимосвязь таблиц устанавливается с помощью индексированных полей. Затем в левом списке выберем значение IDPeople (поле в подчиненной таблице Tel, в данном примере оно единственное) и в правом списке выберем значение IDPeople (поле в главной таблице People). Нажмем кнопку Add - установленное соединение отображается в нижней части окна. Если установлена ошибочная связь, ее следует выделить в нижнем окне и нажать кнопку Delete, находящуюся справа от окна. Завершается настройка взаимосвязи таблиц нажатием кнопки ОК. В результате свойство IndexName включает название вторичного индекса - IDPeopleIndex, а MsterFields содержит имя поля в главной таблице, участвующего во взаимосвязи, - IDPeople.
6. Поместим в форму Form1 компоненты, предназначенные для отображения данных из БД. Для этого выполним следующие действия:
6.1. Со страницы Standart палитры компонент поместим в левый верхний угол формы Form1 метку Label (Метка). Изменим с помощью инспектора объектов ее свойство Caption на «Фамилия, имя, отчество».
6.2. Используя страницу DataControls палитры компонент, поместим в форму Form1 3 компоненты DBEdit (Строка ввода значений в БД) под меткой Label1 в один ряд. Для всех компонент зададим свойству DataSource значение DataSource1, а в свойстве DataField для каждой из этих строк ввода выберем соответственно из списка значения Family, Name и SecName.
6.3. Со страницы Standart палитры компонент поместим в форму еще одну метку Label. Разместим ее под компонентой DBEdit1. Изменим ее свойство Caption на «День рождения».
6.4. Правее этой метки со страницы DataControls палитры компонент поместим строку ввода DBEdit. Зададим ее свойству DataSource значение DataSource1, а в свойстве DataField выберем из списка значение Birthday.
6.5. Правее этой строки ввода со страницы DataControls палитры компонент поместим компоненту DBCheckBox (Выключатель значения в БД). Изменим свойство Alignment (Расположение) у компоненты DBCheckBox1 На LeftJustify, а Caption - на «Пол». Затем зададим ее свойству DataSource значение DataSource1, а в свойстве DataField выберем из списка значение Sex.
6.6. Ниже метки Label2 поместим со страницы Standart палитры компонент еще одну метку Label. Изменим ее свойство Caption на «Комментарий».
6.7. Под этой меткой поместим со страницы DataСontrols палитры компонент компоненту DBMemo (Редактор в БД). Увеличим ее по горизонтали на всю величину формы, а вертикальный размер несколько уменьшим. Зададим ее свойству DataSource значение DataSource1, а в свойстве DataField выберем из списка значение Notes.
6.8. В правую верхнюю часть формы Form1 поместим со станицы DataControls компоненту DBNavigator (Навигатор по записям БД). Записью в таблице БД является строка. Зададим свойству DataSource значение DataSopurce1.
7. Поместим в форму Form1 со страницы DataControls компоненту DBGrid (Таблица отображения БД). Поместим ее ниже всех компонент, уже размещенных в форме, и несколько уменьшим по вертикали. Зададим ее свойству DataSource значение DataSource2. Если все указанные выше действия были выполнены верно, в компоненте DBGrid1 сразу будет выведено содержимое таблицы Tel.db.
8. Определим список полей, значения из которых следует отобразить в компоненте DBGrid. Для этого необходимо выполнить следующие действия:
8.1. Активизируем мышью свойство Columns, тем самым вызвав редактор списка полей таблицы Editing DBGrid1.Columns.
8.2. В этом редакторе нажмем кнопку Add. Выделим появившееся название «0-TColumn». С помощью инспектора объектов дадим свойству FieldName значение Number. Для сложного свойства Titel дадим его параметру Caption значение Номер.
8.3. В окне редактора списка поле нажмем кнопку Add. Выделим появившееся название «1-TColumn». С помощью инспектора объектов дадим свойству FieldName значение Type. Активизируем свойство PickList и в появившемся текстовом редакторе введем две строки: дом. раб. После этих операций нажмем кнопку ОК. Таким образом мы задали список, из значений которого можно определять тип телефона. Затем для сложного свойства Titel дадим его параметру Caption значение Тип. Можно заметить, что отображаемые столбцы появляются в компоненте DBGrid1 по мере их определения.
8.4. Чтобы завершить работу с редактором столбцов таблицы, достаточно его закрыть, воспользовавшись стандартной кнопкой на границе окна.
9. Со страницы Standart палитры компонент поместим в форму Form1 метку Label. Разместим ее над компонентой DBGrid1 в левой части. Изменим свойство Caption на Телефоны.
10. Перенесем со страницы DataControls в форму Form1 еще один навигатор DBNavigator. Разместим его над компонентой DBGrid1 в правой части. Зададим свойству DataSource этого навигатора значение DataSource2.
11. Запустим программу с помощью главного меню Run|Run.
12. При вводе информации в форму с подформой имеются определенные особенности. Чтобы отметить их, введем информацию в форму. Для этого
выполним следующие действия:
12.1. Нажмем кнопку «Плюс» на панели верхнего навигатора по записям u1041 БД. После этого создается новая запись в таблице People, куда внесем информацию о новом человеке. В три строки ввода под меткой «Фамилия, имя, отчество» последовательно введем значения «Хромов», «Олег», «Львович». В строку ввода рядом с меткой «День рождения» введем 14.01.79. Выключатель с надписью «Пол» должен быть включен.
Нажмем кнопку «Галочка» на верхней панели навигатора по записям. Созданная запись о человеке сохраняется в таблице People. Сохранить данные о человеке необходимо до начала ввода его телефонов, иначе они не будут соответствовать этому человеку, а в БД окажется столько лишних записей, сколько в этом случае введено телефонов. Чтобы пользователь не смог поступить иначе, нужно запретить ввод данных в компоненту 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.
Пол - комбинированная строка ввода u1079 значений поля БД (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.
Количество изделий каждого вида.
страница 1 страница 2 страница 3 ... страница 5 | страница 6
|