Для начала создания приложения в среде Delphi необходимо подключить базу данных. Это очень легко производится с помощью компонента TOracleSession. Вам просто необходимо положить этот компонент на форму и сделать некоторые настройки. Укажите свойства LogonUsername, LogonPassword и LogonDatabase. Затем вызовите метод LogOn или установите свойство Connected в положение True.
Вообще, как правило, все не визуальные компоненты, такие как TTimer, TOpenDialog, TimageList и др., группируются в создаваемой программе в специальном модуле данных TDataModule. Модуль данных представляет собой хранилище объектов, которое позволяет централизованно управлять их работой и отделяет программную логику, связанную с базой данных, от программного кода, выполняющего вычислительные действия и отображение данных на форме. Для создания нового модуля данных необходимо зайти в соответствующий пункт меню (см. Рисунок 3.1).
Рисунок 3.1 – Создание Data Module
Далее нам необходимо выбрать нужные данные из базы данных. Для этого используем компоненты TOracleDataSet и TOracleQuery. Поместите компонент типа TOracleDataSet в ваш DataModule и назовите его odsTitle. Компонент TOracleQuery позволяет очень гибко, визуально или программно, определить условие отбора записей из нескольких таблиц, а работать с итоговым набором отобранных записей можно обычным способом. Для того, чтобы выполнить написанный вами запрос, нужно установить значение свойства Active в True или вызвать метод Open. На Рисунок 3.2. показан пример установки значения True в свойстве Active для OracleDataSet5.
Рисунок 3.2. – Значение True в свойстве Active
В свойстве Sequence Field можно указать последовательность, значение из которой будет автоматически подставляться в указанное поле. На Рисунке 3.3 показан пример.
Рисунок 3.3 – Работа с Sequence Field
Вообще, для связи набора данных TOracleDataSet с data-aware компонентами необходимо использовать TDataSource. На Рисунке 3.4. показана схема взаимодействия. Как видно из рисунка, TDataSource является связным звеном между компонентами data-aware и TOracleDataSet. Компонент TDataSource позволяет абстрагироваться от конкретной СУБД. Например, если потребуется преобразовать имеющееся приложение в многопользовательский справочник, то достаточно настроить таблицы на другую СУБД с аналогичной схемой БД, способную работать в сети. Элементы управления этого не заметят, потому что будут обращаться к источнику данных, а не к конкретным таблицам. В нашем случае каждый источник данных после размещения в модуле данных связывается с конкретной таблицей с помощью свойства TOracleDataSet.
Рисунок 3.4. – Схема взаимодействия. Обратите внимание на следующий факт!!! Для того, чтобы в инспекторе объектов в выпадающих списках свойств были доступны компоненты, находящиеся в другом модуле, необходимо его указать с помощью команды меню File|Use Unit (см. Рисунок 3.5.) или воспользоваться одновременным нажатием клавиш Alt+F11.
Рисунок 3.5. – Use Unit.
Чтобы просмотреть значения из нашего набора данных , нужно разместить на форме какие-либо компоненты с вкладки “DataControls”, например TDBGrid , он отображает данные в виде таблицы. В свойстве DataSource укажите odsTitle.
Для того чтобы получить возможность редактировать, добавлять или удалять записи таблицы, писать программный код не требуется. Достаточно разместить на форме компонент TDBGrid. В его свойстве DataSource следует указать нужный источник данных. Двойным нажатием на Grid вызывается редактор полей, нажмите в нём кнопку «Add All Fields» чтобы добавить все поля из набора данных. Здесь для каждого поля можете указать его ширину, название поля и многое другое. Для поля TITL_ID свойство Visible установите в False чтобы оно не отображалось в таблице. Пример на Рисунке 3.6.
Рисунок 3.6. – Редактирование колонок.
Для упрощения навигации по таблице (что немаловажно, если в ней очень много записей) имеется компонент TOracleNavigator. (см. Рисунок 3.7.) Он обычно размещается на форме под компонентом TDBGrid и привязывается к нему через свойство DataSource. Значение этого свойства должно совпадать со значением такого же свойства связной таблицы. Навигатор позволяет перемещаться по набору записей вперед и назад, переходить к первой и последней записи и выполнять ряд других функций. Функции Навигатора доступны как при щелчках на его кнопках во время работы приложения, так и из программного кода.
Рисунок 3.7. – Компонент Navigator.
Часто, чтобы отобразить данные из двух таблиц связанных отношением «один ко многим» используют механизм master-detail (главный-подчинённый). В нашем случае такими являются таблицы TITLE и TITLE_COPY. Попробуем сделать так, чтобы при выборе какой-либо кассеты отображались все имеющиеся копии. Действуйте по следующему алгоритму:
1) Положите в DataModule ещё один TOracleDataSet;
2) В свойстве SQL напишите запрос для выбора всех записей из таблицы TITLE_COPY;
3) В свойстве Master укажите odsTitle;
4) На форму добавьте ТDBGrid и свяжите его с новым набором данных;
5) Протестируйте приложение.
Одной из самых важных функций при работе с базой данных является функция поиска. В Delphi есть множество способов реализации этой задачи. Мы рассмотрим наиболее удобный и самый эффективный - с помощью переменных запроса. Для примера сделаем поиск кассет по названию. Для этого просто добавьте в ваш запрос выбора кассет ещё одно условие: « where t.title like :name ». Здесь :name – это имя переменной, оно может быть любым, но должно начинаться с двоеточия. Затем откройте свойство Variables и нажмите кнопку Scan SQL. Настройте переменную :name в соответствии с Рисунком 3.8.
Рисунок 3.8. – Настройка переменной :name.
После настройки переменной, расположите на форме простой TEdit, в который мы будем писать строку поиска, и кнопку для выполнения поиска. Чтобы изменить значение переменной в процессе выполнения программы используйте метод SetVariable. После изменения следует добавить код для переоткрытия набора данных (методы close и open). Проверьте ваш поиск на работоспособность.
Теперь займемся реализацией такой функции как оформление проката. Для получения положительного результата воспользуйтесь приведенной ниже последовательностью действий:
1) Создайте новую форму со всеми необходимыми полями;
2) В DataModule добавьте TOracleDataSet, выбирающий данные из таблицы RENTAL;
3) Свяжите его с помощью механизма master-detail c таблицей TITLE_COPY;
Для выбора клиента из справочника удобно использовать компонент типа TDBLookupComboBox (закладка меню Data Controls). В свойстве ListSourse нужно указать DataSourse связанный со справочником клиентов, в ListField – поле, которое будет отображаться (last_name), в KeyField - ключевое поле (member_id).
4) Расположите на форме пару кнопок, «Сохранить» и «Отменить», которые будут вызывать методы Post и Cancel соответственно;
5) На главную форму добавьте кнопку для вызова формы оформления проката (используйте метод ShowModal);
6) Добавьте в код вызов метода Append;
7) Сделайте кнопку доступной (свойство Enabled) только если выбранная кассета имеется в наличии;
Для проверки значения поля STATUS используйте метод FieldByName. Проверку следует осуществлять в момент совершения события OnDataChange компонента DataSource, связанного с TITLE_COPY.
В данном разделе были рассмотрены основные этапы создания пользовательского приложения. Дальнейшая реализация каких-либо функций требует индивидуального подхода. В следующем разделе будет рассмотрено множество функций для автоматизации Видео проката.
Для компонентов редактирования полей «рейтинг» и «категория» (типа TDBComboBox) в свойстве Items нужно указать возможные значения, (NR,R,PG,G) и (CHILD,SCIFI,Comedy,Action) соответственно.
Опубликовал Kest
June 16 2010 12:00:19 ·
0 Комментариев ·
13734 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Отлично!
100%
[1 Голос]
Очень хорошо
0%
[Нет голосов]
Хорошо
0%
[Нет голосов]
Удовлетворительно
0%
[Нет голосов]
Плохо
0%
[Нет голосов]
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.