Использование Аdo-компонентов в Delphi

Разделы: Информатика


Вид урока: практическое занятие

Метод обучения: частично-поисковый

Цели урока:

  • Обучающие:
    • изучить свойства компонентов TADOConnection, TADODataSource, TADODataSet, TADOTable, TADOQuery.
    • научить использовать ADO-компоненты Delphi и их свойства для создания приложений.
  • Развивающие:
    • продолжить развитие логического мышление студентов;
    • показать вариативность использования разных свойств объектов для выполнения одних и тех же задач;
    • продолжить формирование у студентов навыков по разработке интерфейса программы;
    • организовать взаимосвязь между дисциплинами «Базы данных», «Основы алгоритмизации и программирования»
  • Воспитывающие:
    • воспитывать способность к самостоятельному поиску решения задачи.

Оборудование: персональные компьютеры

Учебный и раздаточный материал:

  • электронный практикум;
  • файл базы данных, подключаемой с помощью ADO-компонентов;
  • задания для самостоятельной работы;

ПО: Borland Delphi for Microsoft Windows.

Этапы урока

Деятельность преподавателя

Деятельность студентов

Средства обучения

1.

Организационный момент

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

 

2.

Повторение пройденного материала

Преподаватель повторяет со студентами основные ADO-  компоненты Delphi. Студенты отвечают на вопросы преподавателя Приложение Delphi
3.

Изучение нового материала

Преподаватель знакомит студентов со свойствами ADO-компонентов, демонстрирует способы изменения свойств компонентов Delphi, знакомит студентов с событиями обработки компонентов формы. Студенты вместе с преподавателем знакомятся с новыми компонентами и осуществляют создание макета приложения Раздаточный материал: электронный практикум, приложение,  файл базы данных, подключаемой с помощью ADO
4.

Самостоятельная работа студентов

Преподаватель следит за правильностью выполнения заданий студентами Самостоятельно выполняют дополнительные задания Приложение Delphi, электронный практикум
5.

Подведение итогов урока, выдача домашнего задания

Подводит итоги занятия.
Выставляет оценки студентам
Выдаёт студентам индивидуальные домашние задания
Студенты демонстрируют результаты работы, записывают д/з Задания для самостоятельной работы

Задание. Информационная система хранит информацию о врачах, о пациентах и их лечении. База данных включает в себя следующие  сущности:

Рис. 1

Рис. 1

Создать проект в Borland Delphi  и обеспечить доступ к БД , используя ADO-компоненты.

ХОД УРОКА

I. Повторение пройденного материала в форме опроса

Вопросы:
– Для чего используются ADO-компоненты в Delphi?
– Какие ADO-компоненты необходимо использовать для организации связи с базой данных? (Приложение 1)
– Какие свойства ADO-компоненты компонентов вы знаете?

II. Изучение нового материала

Вывод данных с помощью ADO-компонент  на форму.
Создаем проект Delphi, сохраняем созданное нами приложение в папку «Больница», где расположен файл базы данных.
Помещаем на форму компонент ADOConnection с вкладки ADO палитры компонентов.
Устанавливаем свойство ConnectionString для этого компонента (на вкладке «Поставщик данных» выбираем «Microsoft Jet 4.0 OLE DB Provider» на вкладке «Подключение» выбираем подключаемый файл).
Поскольку файл базы данных и приложение, разрабатываемое в Delphi, находятся в одной папке «Больница», удобнее при подключении не указывать весь путь к базе данных, а ввести только его полное имя. Тогда при переносе в дальнейшем папки «Больница» в другое место, никаких проблем с приложением возникать не будет!

Рис. 2

Рис. 2

Проверяем подключение.
Помещаем на форму компонент ADOTable с вкладки ADO палитры компонентов.
Устанавливаем свойство Connection  (указываем наш ADOConnection1) – в  свойстве TableName компонента ADOTable  должно появиться окно 'Database Login' а затем в выпадающем списке появится список таблиц нашей базы данных.

Рис. 3

Рис. 3

Выбираем таблицу или запрос, которые нам необходимо вывести (обратите внимание, что для вывода каждой таблицы или запроса необходим отдельный компонент ADOTable или ADOQuery соответственно, но ADOConnection для всех один!).
Устанавливаем на форму компонент DataSource со вкладки Data Access.
Свойство DataSet этого компонента меняем на ADOTable1.
Помещаем DBGrid с вкладки Data Controls и свойству DataSource присваиваем значение DataSource1.
Помещаем DBNavigator с вкладки Data Controls и свойству DataSource присваиваем значение DataSource1.
Активируем подключенную таблицу, задав свойству Active  компонента ADOTable1 значение True, в результате чего в DBGrid отобразится таблица из нашей базы данных. Можно активировать таблицу с помощью кнопки:
procedure TForm1.Button1Click(Sender: TObject).

begin
adotable1.Open;
end;

Чтобы каждый раз при запуске программы на экран не выходило окно 'Database Login', установите свойство LoginPrompt компонента ADOConnection равным False.

III. Создание интерфейса приложения

По шаблону, предложенному выше, необходимо для каждой из таблиц определить свой ADO-компонент. Для этого размещаем на форме компоненты ADOTable1, …, ADOTable6, подключаем их к файлу базы данных (свойство Connection),  задаем свойству TableName для этих компонентов следующие значения:

ADOTable1 – таблица «Пациенты»
ADOTable2 –  таблица «№ палаты»
ADOTable3 – таблица «Врачи»
ADOTable4 – таблица «Палаты»
ADOTable5 – таблица «Препараты»
ADOTable6 – таблица «Лечение»

Размещаем на форме компоненты DataSource1, …, DataSource6, которые  могут нам понадобиться для отображения или передачи данных. Для каждого из них определяем в свойстве DataSet соответствующую таблицу.

Рис. 4

Рис. 4

Устанавливаем на форму компонент DBLookupComboBox (см. рис 5) с вкладки Data Controls (список будет использоваться для отображения номеров палат ) и в свойствах   ListSource, ListField и KeyField  этого компонента задаём имя отображаемого столбца . Свойство DataSource компонента необходимо оставить пустым.

Отобразим с помощью компонента DBGrid содержимое таблицы «Пациенты»  (присваиваем свойству DataSource значение DataSource1)

Обеспечим возможность модификации созданной таблицы с помощью компонента DBNavigator и проверим его работоспособность (если редактирование таблицы с помощью этого компонента оказалось затруднительным, то необходимо изменить свойство Options компонента DBGrid, задав dgEditing ––> true)

Определим событие OnClick для компонента DBLookupComboBox, при выполнении которого выводится информация о пациентах, размещённых в палате с выбранным номером. Реализовать это событие можно двумя способами:

1 способ (с использованием фильтра):

Размещаем на форме компоненты DataSource7, который  будет использован для отображения и передачи данных запроса ADOQuery1 ( определяем в свойстве DataSet компонент ADOQuery1). Создаём SQL- запрос на вывод информации о пациентах путём использования свойства SQL ––> Text компонета  ADOQuery1 с помощью команды form1.ADOQuery1.SQL.Text:='SELECT … FROM …..'.
Открываем SQL- запрос и осуществляем фильтрацию информации  по заданному критерию с помощью команд:

Рис. 5

Рис. 5

2 способ (критерий отбора задаётся в разделе Where  SQL-запроса):

Создаём SQL-запрос на вывод информации о пациентах находящихся в палате, номер которой задан в компоненте DBLookupComboBox,  с помощью команды:

Рис. 6

Рис. 6

Определим событие OnClick для кнопки «Назначение номера палаты и лечащего врача».
При нажатии на эту кнопку открывается форма «Добавление информации» (см. рис.10), на которой отображаются «№ палаты» и «ФИО врача» пациента с заданным номером. Поиск этих данных осуществляется (см. рис. 1) по схеме:

Палаты.[Код пациента] ––> Палаты. [Код палаты]
Палаты.[Код пациента] ––> Палаты.[Код врача] ––> Врачи.[Код врача] ––> Врачи.[ФИО врача]

Рис. 7

Рис. 8

Рис. 8

Определим событие OnClick для кнопки «Добавить» (см. рис.7). При нажатии на эту кнопку введённая информация добавляется в поля «Код пациента», «код врача» и «Код палаты»  таблицы «Палаты»:

Рис. 9

Рис. 9

Определим событие OnClick для кнопки «Информация о всех пациентах» (см. рис.7), которая будет отображать в компоненте DBGrid содержимое Таблицы «Пациенты» с помощью команды:

Рис. 10

Рис. 10

Размещаем на форме (см.рис.11 )компонент DBLookupListBox с вкладки Data Controls (список будет использоваться для отображения фамилий врачей, работающих в больнице) и в свойствах   ListSource, ListField и KeyField  этого компонента задаём имя таблицы и отображаемого столбца . Свойство DataSource компонента необходимо оставить пустым.

Рис. 11

Рис. 11

Ниже приведён фрагмент программы, позволяющий при включении переключателя «Врачи» отобразить содержимое поля «ФИО врача» в компоненте DBLookupListBox

Рис. 12

Рис. 12

Создадим для компонента DBLookupListBox  контекстное меню (см. рис.11), позволяющее редактировать записи в списке (добавлять записи, редактировать записи, удалять записи):
Рассмотрим фрагмент программы для добавления информации  в список DBLookupListBox с помощью функции Inputbox (на рис. 13 показано окно для ввода данных, реализованное с помощью функции Inputbox ).

Рис. 13

Рис. 13

Рис. 14

Рис. 14

Рассмотрим фрагмент программы для редактирования информации  в списке DBLookupListBox (на рис. 15 показано окно для ввода данных, реализованное с помощью функции Inputbox )

Рис. 15

Рис. 15

Рис. 16

Рис. 16

Рассмотрим фрагмент программы для удаления информации  из списка DBLookupListBox

Рис. 17

Рис. 17

IV. Самостоятельная работа студентов

По аналогии с п.7 предыдущего раздела,  создадим событие OnClick для кнопки «Назначение лечения».При нажатии на эту кнопку открывается форма «Добавление информации о лечении», на которой будет отображен код  выбранного пациента, можно выбрать название препарата из списка (компонент DBLookupComboBox), задать количество препарата, выбрать врача из списка (компонент  DBLookupComboBox) и ввести дату назначения.  По заполненным данным  должны быть определены «код_ препарата», «количество_препарата», «код врача», «дата назначения»  и информация добавлена в таблицу «Лечение»

По аналогии с п.10 предыдущего раздела, создадим событие обработки нажатия на переключатель «Препараты» (см. рис.11). При включении переключателя «Препараты» необходимо отобразить содержимое поля «Препараты» в компоненте DBLookupListBox.

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

Рис. 18

Рис. 18

V. Подведение итогов урока, выдача домашнего задания

Преподаватель подводит итоги занятия, выставляет оценки студентам, выдаёт студентам домашние задание:
Создать SQL-запрос, подсчитывающий количество пациентов в больнице
Создать SQL-запрос, позволяющий удалить из базы данных выписавшихся больных (дата выписки которых больше сегодняшней даты)

Рис. 19

Рис. 19

Полный код программы и файл базы данных вы можете просмотреть в Приложении 2.

Список литературы:

  1. Фленов М.Е. Библия Delphi, 2-е изд., перераб. и доп. – СПб: БХВ – Петербург, 2008
  2. http://www.interface.ru/borland/ado1.htm статья Дмитрия Ю. Сидорова «ADO-компоненты»
  3. Дарахвелидзе П.Г., Марков Е.П. Программирование в Delphi 7. – СПб: БХВ – Петербург, 2003.
  4. http://www.computerbooks.ru. Самоучитель по Delphi для начинающих.
  5. Бобровский С.И. Delphi 7. Учебный курс . – СПб: Питер, 2004
  6. В.В. Фаронов Программирование баз данных в Delphi 7. Учебный курс. – СПб: Питер, 2006
  7. А.Я. Архангельский Приемы программирования в Delphi на основе VCL. – М. ООО «Бином-Пресс», 2006