Инфоурок Информатика КонспектыЛабораторная работа №12. Подключение БД в приложение Delphi. ADO технология

Лабораторная работа №12. Подключение БД в приложение Delphi. ADO технология

Скачать материал

Лабораторная работа№ 12

Подключение БД в приложение Delphi. ADO технология

С.В. Каверин

Цель работы. Ознакомится с компонентами ADOConnection, ADOTable и DataSource для связи БД с Delphi. Существенно, что технология ADO позволяет получить доступ к базам данных СУБД Access.

Постановка задачи. Создать клиентское приложение для работы с БД «Товар». Приложение имеет главную форму (окно), две рабочие формы (окна) и модуля данных. Главное окно содержит меню вызова таблиц БД (рисунок 1). Выбор пункта меню вызывает соответствующее окно для работы с тремя таблицами. Таблицы можно редактировать и добавлять новыми записями.

Рисунок 1 – Начальное окно главной формы приложения

В модуле данных размещаются компоненты связи приложения с БД.

Порядок выполнения работы:

1          Создаем главную форму приложения. Размещаем на ней компонент Меню для выбора нужных таблиц.

2          Связываем БД «Товар» с нашим приложением.

3          Создаем две подчиненные формы. На первой будут таблицы «Заказы», «Товары» и «Клиенты». На второй – «Сотрудники», «Поставщик» и «Поставка».

Необходимые компоненты

Data Module – специальная форма, предназначенная исключительно для размещения на ней невизуальных компонент для доступа к данным.

ADOConnection – используется для подключения приложения к БД (закладка dbGO или в поздний версиях ADO).

ADOTable (таблица ADO)– связывается с конкретной таблицей БД (закладка dbGO или в поздний версиях ADO);

DataSource (источник данных) – компонент, используется как связка данных из таблиц, с отображающими и управляющими компонентами Delphi (закладка Data Access);

DBGrid – таблица, позволяющая вывести содержимое таблицы БД на пользовательскую форму (закладка Data Controls);

DBNavigator – кнопочная панель, которая обеспечивает перемещение указателя текущей записи таблицы, активизацию режима редактирования, добавление и удаление записей (закладка Data Controls).

1 Создание нового приложения

1.1 Запускаем Delphi. Выбираем File -> New-> VCL Forms Application. Сохраняем модуль Unit1 и проект приложения под именем Tovar.dpr в своей папке. В эту же папку помещаем файл БД Товар.accdb.

1.2 Сделаем нашу форму главной MDI формой (многодокументный интерфейс). Для этого в инспекторе объектов в свойствах Form1 свойство FormStyle установим в fsMDIForm. Форма стала стартовой.

1.3 В свойстве Caption главной формы пишем «Информационная система Товар».

1.4 Добавим на форму компонент TMainMenu из вкладки Standard. Щелкнем дважды мышкой на компоненте MainMenu1 и увидим окно для создания меню.

Рисунок 2 – Настройка компоненты MainMenu1

Выставляем курсор на «прямоугольник» и в появившемся инспекторе свойств пишем Таблицы (рисунок 2), нажимаем Enter. Перемещаем курсор на «прямоугольник» ниже «Таблицы». В появившемся инспекторе свойств пишем «ЗаказыТоварыКлиенты» и нажимаем Enter, а потом – «СотрудникиПоставщикПоставка». Перемещаем курсор на «прямоугольник» правее «Таблицы» и пишем «Справка».

1.4 Компилируем и запускаем программу (F9).

2 Привязка БД «Товар.accdb» к приложению

2.1 Командой File / New / Data Module (в категории Delphi Files) добавьте в проект новый модуль данных. Дайте ему имя dm (для краткости) и сохраните его как DatMod.pas в папку приложения.

2.2 Положите на модуль dm компонент ADOConnection (в закладке dbGo). Компонент ADOConnection1 позволит привязать БД Товар.accdb к приложению.

Настраивается компонент ADOConnection. Дважды щелкните на этом компоненте. В открывшемся окне установите источник связи, выбрав Use Connection String (рисунок 3).

Рисунок 3 – Окно модуля данных

Нажмите кнопку Build..., перейдите на закладку «Поставщик данных» и выберите Microsoft Office 12.0 Access Database Engine Provider (рисунок 4). Нажмите кнопку Далее.

Рисунок 4 – Окно свойств связи с данными

Перейдите за закладку Соединение, введите в строку Источник данных имя нашей БД, как показано на рисунке 5. Если для доступа к БД необходим пароль и идентификатор пользователя, то их надо указать (по умолчанию к БД, созданной в MS Access, доступ есть у пользователя Admin, но пароль не нужен). После этого нажмите кнопку Проверить подключение, чтобы проверить подключается ли БД Товар.accdb. Если будет дан ответ «Проверка подключения выполнена», то щелкая по кнопке ОК закрыть все окна.

Рисунок 5 – Подключение БД Товар.accdb к приложению

2.3 Установим свойства ADOConnection в Инспекторе объектов:

¾       LoginPrompt = False – запрос имени и пароля пользователя отключен.

¾       Mode = cmShareDenyNone.

¾       Connected = True – подключение к базе активировано.

3 Связывание таблиц БД с приложением

3.1 Положите на модуль данных dm компоненты ADOTable (закладка dbGo) и DataSource (закладка DataAccess).

3.2 Для удобства работы дайте им имена TabZakaz и dsZakaz, соответственно. Для этого в инспекторе объектов ADOTable1 в свойство Name записываем TabZakaz, а в инспекторе объектов DataSource1 в свойство Name записываем dsZakaz.

3.3 Подключим таблицу TabZakaz к компоненту ADOConnection1 и к одноименной таблице «Заказы» нашей БД (рисунок 6).

В инспекторе объектов таблицы TabZakaz устанавливаем свойства:

¾       Connection = ADOConnection1.

¾       TableName = Заказы.

¾       Active = True (! это свойство устанавливать в последнюю очередь).

Рисунок 6 – Установка свойств компонента TabZakaz (ADOTable1)

3.4 В инспекторе объектов компонента dsZakaz (бывшая DataSource1) установите свойство DataSet = TabZakaz (рисунок 7).

 

Рисунок 7 – Установка свойств компонента dsZakaz (DataSource1)

После определения свойств исчезнут красные знаки вопроса слева от компонентов в окне Stucture, что говорит о готовности компонента к работе.

3.5 Двойным щелчком на компоненте TabZakaz откроем Окно редактора полей, щелкнем в окне правой кнопкой мыши и в контекстном меню выберем команду Add all fields. Окно редактора заполнится списком всех полей таблицы Заказы. Если щелкнуть на любом поле в окне редактора полей, то в окне инспектора объектов станут доступными свойства объекта-поля.

Рисунок 8 – Добавление полей в компонент TabZakaz

3.6 Поступая аналогичным образом, установите в модуль dm соответствующие компоненты для таблиц «Товары» (компоненты TabTovar, dsTovar), «Клиенты» (компоненты TabKlient, dsKlient), «Сотрудники» (компоненты TabSotrydniki, dsSotrydniki), «Поставщик» (компоненты TabPostavshik, dsPostavshik), «Поставка» (компоненты TabPostavka, dsPostavka).

3.7 Сохраняем проект – File -> Save All.

!!! База данных Товар.accdb подключена к клиентскому приложению, и все таблицы привязаны к компонентам Delphi.

4 Разработка рабочих форм для работы с таблицами БД

Постановка задачи. При выборе пункта меню Таблицы (рисунок 2), должно появиться новое окно, в котором отображается тройка выбранных таблиц. Также необходим механизм навигации и редактирования таблиц.

Разработка для пункта меню «ЗаказыТоварыКлиенты».

4.1 Создаем новую форму File->New->Form-Delphi. Сохраняем модуль с именем Unit2 (предлагается по умолчанию).

4.2 В инспекторе объектов для Unit2 устанавливаем свойство:

Caption = «Заказы» «Товары» «Клиенты»;

Visible = False // При запуске приложения – окно невидимо.

4.3 Знакомим Form1 и Form2.

4.3.1 Делаем активной Form1 (щелкнем по Unit1, а затем по форме). Далее File->Use Unit.. (Использовать модуль), где в контекстном меню выбираем Unit2 и жмем OK (рисунок 9). Теперь форма Form1 знает о существовании Form2, в коде Unit1 в разделе implementation прописалась строка  (проверьте это нажав F12).

Рисунок 9 – Знакомство форм Form1 с Form2

4.3.2 Делаем активной Form2. Далее, File->Use Unit.. и в контекстном меню выбираем Unit1 и жмем OK. Форма Form2 знает о Form1 (проверьте).

Рисунок 10 – Вид окна для пункта ЗаказыТоварыКлиенты

4.4 Переходим на Form1. Щелкаем дважды мышкой по компоненту MainMenu1, а затем дважды по пункту ЗаказыТоварыКлиенты. Пишем код.

procedure TForm1.N2Click(Sender: TObject);

begin

Form2.Show;    // Метод Show выводит на экран окно Form2

end;

4.5 Оформляем Form2. Окончательный вид окна показан на рисунке 10.

4.5.1 Знакомим Form1 и Form2 с модулем DatMod (см. 4.3.1 и 4.3.2).

4.5.1 Положим на Form2 три компонента GroupBox (закладка Standard) и используя свойства Caption дайте им заголовки «Заказы» (для GroupBox1), «Товары» (для GroupBox2) и «Клиенты» (для GroupBox3).

4.5.2 Положите в GroupBox1 сетку DbGrid1 (закладка Data Controls). Для DbGrid1 свяжите свойство DataSource с источником данных dsZakaz. В Окне редактора полей (двойной клик по DbGrid1) выберите команду Add all fields.

Проделайте ту же операцию для «Товары» и «Клиенты».

4.6 Сохраняем (File -> Save All) и компилируем (F9) проект.

4.7 Положите в GroupBox1 под сетку DbGrid1 компонент DBNavigator (закладка Data Controls). В инспекторе DBNavigator свойство DataSource = dsZakaz.

Проделайте ту же операцию для «Товары» и «Клиенты».

4.8 Вывод картинки. В бокс GroupBox2 (Товары) положите компонент Image (вкладка Additional) для визуализации изображений товаров, а также компонент Label (вкладка Standart) для поясняющего текста.

Разрабатываемое приложение предполагает, что папка foto с изображениями товаров находятся в каталоге таблицы базы данных. Во время добавления информации в базу данных пользователь вводит в поле Изображение таблицы Товары имя файла (с расширением) картинки, а во время просмотра картинка автоматически появляется в поле Image1. Картинки могут иметь расширения bmp или jpeg.

4.9 Пишем код отображения фото. Переходим в модуль dm (DatMod).

Заходим в Код (F12). Чтобы приложение понимало формат файлов *.jpg, добавьте в список USES (в блоке implementation) имя модуля JPEG, т.е. . Для формата BMP – ничего делать не надо.

Возвращаемся к форме dm (F12). Выделяем компонент TabTovar, в Инспекторе переходим во вкладку Events и выбираем событие AfterScroll (двойной клик).

В окне кода для модуля dm (DatMod) пишем код

Краткое пояснение. Событие AfterScrool происходит всякий раз после перехода к другой записи таблицы. Процедура Tdm.TabTovarAfterScroll анализирует содержимое поля 'Изображение' таблицы TabTovar и, если оно не пустое, выводит картинку из папки foto. В переменной PicPath сохранится полный путь к папке с приложением, а в переменной PicName – содержимое ячейки поля 'Изображение' в записи с курсором. Функция ExtractFilePath(ParamStr(0)) возвращает путь к папке, где запущено приложение, возвращает тип string. Методы TabTovar.FieldValues['Изображение'] и TabTovar.FieldByName('Изображение').AsString – два способа извлечь содержимое из ячейки текущей записи поля 'Изображение'. Метод LoadFromFile(PicPath+PicName) загружает картинку из файла.

4.10 Сохраняем (File -> Save All) и компилируем (F9) проект. Если при этом может выскочить сообщение о том, что в приложении есть обращение на несуществующий объект:

.

Ничего страшного. Просто мы сначала создали модуль dm (DatMod), а потом Form2 (Unit2), и это прописалось в модуле Tovar.pas. Поэтому при запуске приложения создается модуль dm, при этом процедура Tdm.TabTovarAfterScroll ссылается на форму Form2, которой еще нет. Чтобы обойти эту ситуацию откройте файл Tovar.dpr и поменяйте местами соответствующие строчки:

4.11 Сохраняем (File -> Save All) и компилируем (F9) проект.

Задание. Создайте форму Form3 и проведите разработку окна для работы с пунктом меню «СотрудникиПоставщикПоставка». Не забудьте в выбранных таблицах (модуль dm) установить свойство Active = True.

5 Закрытие главной формы

Чтобы внесенные пользователем изменения в таблицы были сохранены в БД «Товар» в Access, таблицы в Delphi по окончании работы необходимо закрыть. Для этого используем метод Close. Для закрытия главной формы (и приложения в целом) используем метод Free – закрывает форму и освобождает память. Отметим, что если главную форму закрыть, то рабочие формы закрываются автоматически.

5.1 Переходим на Form1. Устанавливаем кнопку BitBtn1 (вкладка Additional). В инспекторе BitBtn1 устанавливаем свойство Kind = bkClose.

5.2 В инспекторе BitBtn1 заходим в Events и вызываем обработчик события OnClick (Двойным щелчком).

В открывшемся окне Code пишем команду на закрытие Form1.

Пояснение. При попытке закрытия приложения (команда Form1.Free) автоматически возникает событие OnCloseQuery. Обработчик события автоматически получает логическую переменную CanClose. По умолчанию эта переменная имеет значение True, и форму можно закрыть. Если параметр CanClose в значении False, то закрытие формы отменяется. Такую возможность используем для подтверждения закрытия главной формы Form1 с помощью MessageDlg(). Здесь при закрытии Form1 выдается типичный запрос на подтверждение операции – Yes и No.

5.3 В инспекторе Form1 заходим в Events и вызываем обработчик события OnCloseQuery (двойным щелчком).

В открывшемся окне Code пишем код обработчика события OnCloseQuery (запрос на закрытие).

6 Задания для самостоятельной работы

По аналогии с построенным рамочным проектом «Информационная система Товар», созданной на основе БД Access и приложения Delphi, спроектируйте и реализуйте информационную систему согласно Вашему варианту. В качестве базы данных используйте базу данных, разработанную в лабораторной работе №11. Помните, любые новшества только приветствуются. Например, поле Memo можно вывести отдельно от записи в таблице.

Литература

Фленов М.Е. Библия Delphi //СПб.: БХВ-Петербург.-2011.-688с.

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Лабораторная работа №12. Подключение БД в приложение Delphi. ADO технология"

Методические разработки к Вашему уроку:

Получите новую специальность за 3 месяца

Землеустроитель

Получите профессию

Методист-разработчик онлайн-курсов

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 655 053 материала в базе

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 25.07.2016 7762
    • DOCX 750.4 кбайт
    • 117 скачиваний
    • Рейтинг: 5 из 5
    • Оцените материал:
  • Настоящий материал опубликован пользователем Каверин Сергей Владимирович. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    Удалить материал
  • Автор материала

    Каверин Сергей Владимирович
    Каверин Сергей Владимирович
    • На сайте: 7 лет и 8 месяцев
    • Подписчики: 0
    • Всего просмотров: 74763
    • Всего материалов: 10

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Технолог-калькулятор общественного питания

Технолог-калькулятор общественного питания

500/1000 ч.

Подать заявку О курсе

Курс профессиональной переподготовки

Информатика: теория и методика преподавания в образовательной организации

Учитель информатики

300/600 ч.

от 7900 руб. от 3950 руб.
Подать заявку О курсе
  • Сейчас обучается 490 человек из 72 регионов
  • Этот курс уже прошли 1 517 человек

Курс повышения квалификации

Применение компьютерных моделей при обучении математике и информатике в рамках ФГОС ООО

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Сейчас обучается 50 человек из 29 регионов
  • Этот курс уже прошли 177 человек

Курс профессиональной переподготовки

Педагогическая деятельность по проектированию и реализации образовательного процесса в общеобразовательных организациях (предмет "Информатика")

Учитель информатики

300 ч. — 1200 ч.

от 7900 руб. от 3950 руб.
Подать заявку О курсе
  • Этот курс уже прошли 20 человек

Мини-курс

Управление личной продуктивностью менеджера

10 ч.

1180 руб. 590 руб.
Подать заявку О курсе

Мини-курс

Экономика и управление

6 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Эффективное управление электронным архивом

6 ч.

780 руб. 390 руб.
Подать заявку О курсе