Лабораторная работа №1 (2 часа)
Тема: «Модуль данных»
Цель работы: изучить способ создания модуля данных.
Теоретические сведения
1. Доступ к базе данных
Доступ к базе данных выполняется достаточно просто, с использованием богатого набора невизуальных компонентов работы с СУБД. Как правило, эти компоненты группируются в создаваемой программе в специальном модуле данных (TDataModule). Модуль данных представляет собой хранилище объектов, которое позволяет централизованно управлять их работой.
Создадим новый проект и добавим в него модуль данных командой File → New → Data Module. В свойство Name модуля данных поместите значение DM и сохраните модуль.
В модуле данных необходимо разместить компоненты, которые обеспечат доступ к самой БД. Для этого поместим в ранее созданный модуль данных новый компонент TIBDatabase, который расположен на панели InterBase. В свойстве DatabaseNameнадо указать полный путь поиска и имя файла базы данных, в свойстве Name – имя базы данных.
Работа с СУБД InterBase требует обязательной поддержки транзакций. Для этого поместим в модуль данных компонент TIBTransaction, ответственный за управление транзакциями. В его свойстве DefaultDatabase укажем созданный объект IBDataBase1. В свою очередь, в свойстве DefaultTransactionэтого объекта надо указать транзакционный объект IBTransaction1, чтобы установить между ними связь.
Чтобы к БД можно было обращаться, свойству Connected надо присвоить значение True.
2. Доступ к таблицам
Теперь можно добавить в модуль данных компонент TIBTable, который является набором данных (НД). Он позволяют организовать доступ к конкретной таблице указанной базы данных. В свойство Databaseзаносится значение IBDataBase1, в свойство TableName – имя таблицы (в этот момент InterBaseможет запросить имя пользователя и пароль для доступа к базе данных). В свойстве Nameнеобходимо изменить имя IBTable1, используемое по умолчанию, на имя связанной с ним таблицы БД.
Чтобы можно было обращаться к этой таблице, необходимо поместить на форму ещё один компонент TDataSource (источник данных), в котором в свойстве DataSet указывается объект IBTable1. Теперь таблица из БД будет доступна в любой точке программы.
Чтобы к таблице можно было обращаться из программы, свойству Active надо присвоить значение True.
3. Обработка подключения к базе данных
При запуске программы пользователю каждый раз будет задаваться вопрос о его правах: имени и пароле. Это неудобно, поэтому лучше поместить нужные данные в программный код. Проще всего поступить так:
1. значение свойства LoginPromt(запрос прав пользователя) объекта IBDataBase1 установить равным False;
2. в свойстве Paramsуказать две строки:
user_name=SYSDBA
password=masterkey
Теперь при запуске программы диалоговое окно запроса параметров подключения появляться не будет.
Задание:
1. Создать модуль данных;
2. Добавить в модуль данных все таблицы БД.
3. Создать автоматическое подключение к БД.
4. Сохранить проект.
Лабораторная работа № 2 (2 часа)
Тема: «Разработка формы»
Цели работы: изучить компоненты TMainMenu, TDBGrid, TРanel, TbitBtn;
Теоретические сведения
1. Использование компонента TMainMenu
Откройте созданный проект. Создайте новую форму командой File → New → Form.
Измените следующие свойства пустой формы, заданные по умолчанию:
Caption - указывается заголовок формы (например, «База данных Аэропорт»;
Name – указывается имя формы (например, «Main»).
Поместите на форму компонент TMainMenu (компонент расположен на панели Standart).
2. Использование компонентов TDBGrid, TРanel, TbitBtn
Создайте новую форму. Задайте заголовок и имя формы.
Поместите на форму панель TPanel (компонент расположен на панели Standart), установите значение alBottom в свойстве Align. Очистите свойство Caption.
Поместите на форму компонент PageControl (панель Win32), установите значение alClient. Добавьте новую страницу (с помощью контекстного меню). Задайте имя страницы.
Чтобы пользователь программы мог менять высоту панелей, поместите на форму вешку разбивки TSplitte г (панель Additional), в ее свойство Align поместите значение alBottom, в свойство Beveled – True, и в свойство Height - 5.
Поместите на верхнюю панель компонент TDBGrid (панель Data Controls) и в свойстве Align установите значение alClient.
Поместите на нижнею панель кнопку TBitBtn (вкладка Additional). В свойство Kind кнопки поместите значение bkClose.
С помощью команды File → Use Unit (Alt+F11) свяжите модуль главного окна с модулем данных.
Для верхней сетки DBGridl раскройте список свойства DataSource и выберите в нем необходимый источник данных, сетка тут же наполнится данными из выбранной таблицы.
Вид окна к этому моменту:
Задание
1. Создайте меню своего приложения. Например:
2. Создать форму для просмотра данных из таблиц базы данных (основных, имеющих существенное значение при работе с приложением пользователю).
Лабораторная работа № 3 (4 часа)
Тема: «Создание объектов-полей»
Цель работы: создать объекты-поля.
Теоретические сведения
1. Создание объектов-полей
Создание объектов-полей для каждого, используемого в программе НД можно считать признаком хорошего стиля программирования, так как они упрощают доступ к данным и дают программисту дополнительные возможности.
При этом следует помнить, что если для НД создан хотя бы один объект-поле, соответствующий НД будет содержать значения только тех полей, для которых созданы объекты; и наоборот: если для НД не созданы объекты-поля, он содержит данные из всех полей соответствующей таблицы.
Перейдите на модуль данных. Двойным щелчком на компоненте IBTable1 (например, Airplains) откройте окно редактора полей, щелкните в окне редактора правой кнопкой мыши и в контекстном меню выберите команду Add all fields - окно редактора заполнится списком всех полей выбранной таблицы. Этот список означает, что теперь для каждого поля НД создан специальный объект со своими свойствами, методами и событиями. Если вы щелкнете на любом поле в окне редактора полей, то в окне инспектора объектов станут доступными свойства и события объекта-поля. По умолчанию Delphi присваивает объекту-полю имя, полученное сцеплением имени НД и имени поля.
Вновь двойным щелчком на компоненте IBTable1 (Airplains) откройте окно редактора полей и щелчком правой кнопкой мыши вызовите его контекстное меню. Выберите в меню команду New Field, чтобы открыть окно конструктора нового поля.
С помощью конструктора нового поля можно создать в НД новые поля одного из трех типов (тип определяется переключателями в группе Field type):
- Data - поля содержат произвольные данные;
- Calculated - поля содержат вычисляемые данные;
- Lookup - поля содержат данные из таблицы подстановки.
Поле первого типа будет отображаться в сетке пустой колонкой, которую можно заполнить в обработчике события OnGetText этого поля. Вычисляемое поле заполняется в обработчике события OnCalcFields набора данных. Для заполнения подстановочного поля данные берутся из нужного поля другого НД.
2. Обработчик события OnGetText
Откройте окно конструктора нового поля (для таблицы Rout). Создайте поле Marshrut типа Data, которое, например, будет содержать текст, составленный из трех подстановочных полей – Point_otprav, Transitи Point_prib.
Чтобы данные отображались в таком поле, воспользуемся обработчиком события OnGetText созданного объекта-поля Marshrut.
Перейдите к форме модуля данных, щелкните на поле Marshrutи откройте вкладку Events в окне инспектора объектов. Дважды щелкнув в правой части строки события OnGetText, напишите такой обработчик:
procedure TDM.RoutMarshrutGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
if RoutTransit.Value = ' ' then
begin
Text := RoutPoint_otprav.Value + RoutPoint_prib.Value;
end
else
Text := RoutPoint_otprav.Value + RoutTransit.Value + RoutPoint_prib.Value;
end;
Результат такой процедуры во время выполнения программы будет выглядеть следующим образом:
Событие OnGetText возникает всякий раз, когда программа обращается к полю с целью отображения его содержимого в любом визуализирующем компоненте. Программист в обработчике этого события должен поместить нужную строку в переменную Text.
3. Объекты для вычисляемых полей
Вычисляемые поля не входят в состав конкретной таблицы БД, но могут быть присоединены к НД, связанному с этой таблицей. Они предназначены для отображения данных, которые вычисляются в ходе выполнения программы обычно с помощью значений из других полей той же записи. После присоединения вычисляемого поля к НД оно становится во всем подобно обычным объектам-полям, связанным с реальными полями таблицы БД, за одним исключением: такие поля нельзя редактировать, а при вводе новой записи - помещать в них какое-либо значение.
Для создания вычисляемого поля нужно открыть окно New Field редактора полей и, заполнив строки Name, Type и Size, установить переключатель Calculated и закрыть окно щелчком на кнопке ОК. Заполнение вычисляемых полей осуществляется в обработчике события OnCalcFields набора данных.
Напишите такой обработчик события OnCalcFields:
procedure TDM.AirplainsCalcFields(DataSet: TDataSet);
begin
dm.AirplainsChislo_mest.Value := dm.AirplainsCHISLO_BISSNES.Value +
dm.AirplainsCHISLO_ECONOM1.Value +
dm.AirplainsCHISLO_ECONOM2.Value;
end;
Результат такой процедуры во время выполнения программы будет выглядеть следующим образом:
4. Подстановочные поля
Подстановочные поля создаются с целью упрощения понимания пользователем данных таблиц, т.е. вместо ID поля можно показать в сетке таблицы его значение, взятое из другого НД.