Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа (текст), Кашина Ю.С., ПИ-23.docx
Скачиваний:
13
Добавлен:
27.09.2019
Размер:
715.87 Кб
Скачать

2.2.4. Подключение базы данных «Аптека» к приложению

Для того чтобы подключить к нашему приложению и отобразить таблицы базы данных, на форме были размещены следующие компоненты: ADOConnection, DataSource и ADOTable - они не будут видны при запуске приложения. На рисунке 17 показано расположение компонентов на форме.

Рис. 17. Расположение невизуальных компонентов на форме

Компонент ADOConnection (в нашем случае ему присвоено имя apteka_ADOConnection) позволяет очень легко связать базу данных с нашим приложением. Для этого нужно в свойстве ConnectionString создать строку подключения. Программисту доступен удобный мастер по созданию этой строки:

  1. Выбираем свойство ConnectionString, кликаем по кнопке редактирования (рис. 18).

Рис. 18. Свойство ConnectionString компонента ADOConnection

  1. В появившейся форме мастера командной строки нажимаем на кнопку «Build…» (рис. 19).

Рис. 19. Мастер командной строки

  1. Выбираем поставщика данных “Microsoft Jet 4.0 OLE DB Provider” для базы данных MS Access и щелкаем кнопку «Далее» (рис. 20).

Аналогичным образом к Delphi подключаются другие БД. Например, для подключения базы данных SQL сервера используется поставщик данных “Microsoft OLE DB Provider for SQL server”

Рис. 20. Вкладка «Поставщик данных»

  1. Теперь нужно выбрать нужную нам базу данных (если она сделана в MS Access, то должна иметь расширение *.mdb) и проверить соединение данных (рис. 21).

Рис. 21. Вкладка «Соединение»

  1. Нажимаем на ОК, строка доступа сгенерирована.

В свойстве Connected компонента ADOConnection должно стоять True. Это свидетельствует о том, что база данных подключена.

На форме было размещено 3 невизуальных компонента DataSource

( ), отвечающих за каждую таблицу. Через свойство источника данных – DataSet – они были связаны с соответствующими компонентами ADOTable.

У каждого компонента ADOTable необходимо изменить следующие свойства:

  1. Connection := apteka_ADOConnection;

  2. TableName := ’Поставщики’ или ‘Товары’ или ‘Персонал’ (в зависимости от нужной таблицы);

  3. Active := True.

Для того чтобы таблицы выводились на соответствующие компоненты DBGrid, необходимо и для них установить источник данных в свойстве DataSource – это один из трех компонентов DataSource. Таким же образом необходимо связать и компоненты DBNavigator.

Ниже на рис. 22 можно увидеть схему связи данных и компонентов технологии ADO.

Рис. 22. Схема связи данных и компонентов технологии ADO

Особенности программного кода

В связи с тем, что технология ADO инкапсулирует все процедуры, нет необходимости в объемном программном коде, поэтому все особенности кода заключаются лишь в организации удобства интерфейса приложения: подготовка программы к работе и функционирование кнопки «Редактировать».

procedure Tapteka_form.FormActivate(Sender: TObject);

begin

i1:=0;

i2:=0;

i3:=0;

tovar_dbedit1.Enabled:=false;

tovar_dbedit2.Enabled:=false;

tovar_dbedit3.Enabled:=false;

tovar_dbedit4.Enabled:=false;

tovar_dbedit5.Enabled:=false;

tovar_dbmemo1.Enabled:=false;

tovar_dbmemo2.Enabled:=false;

postav_dbedit1.Enabled:=false;

postav_dbedit2.Enabled:=false;

postav_dbedit3.Enabled:=false;

postav_dbedit4.Enabled:=false;

postav_dbmemo1.Enabled:=false;

personal_dbedit1.Enabled:=false;

personal_dbedit2.Enabled:=false;

personal_dbedit3.Enabled:=false;

personal_dbedit4.Enabled:=false;

personal_dbedit5.Enabled:=false;

personal_dbedit6.Enabled:=false;

personal_dbedit7.Enabled:=false;

personal_dbedit8.Enabled:=false;

personal_dbedit9.Enabled:=false;

personal_dbedit10.Enabled:=false;

personal_dbmemo1.Enabled:=false;

end;

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

Далее при работе нажатии кнопки «Редактировать» все поля на конкретной вкладке становятся активными и кнопка меняет название на «Принять».

Для того, чтобы не добавлять много кнопок на форму, используется конструкция if…then…else, где функциональную роль исполняют переменные i1, i2, i3. Это позволяет, меняя названия у одной кнопки, варьировать ее назначение.

procedure Tapteka_form.tovar_Button1Click(Sender: TObject);

begin

if i1=0

then

begin

tovar_dbedit1.Enabled:=true;

tovar_dbedit2.Enabled:=true;

tovar_dbedit3.Enabled:=true;

tovar_dbedit4.Enabled:=true;

tovar_dbedit5.Enabled:=true;

tovar_dbmemo1.Enabled:=true;

tovar_dbmemo2.Enabled:=true;

tovar_button1.Caption:='Принять';

i1:=1;

end

else

begin

tovar_dbedit1.Enabled:=false;

tovar_dbedit2.Enabled:=false;

tovar_dbedit3.Enabled:=false;

tovar_dbedit4.Enabled:=false;

tovar_dbedit5.Enabled:=false;

tovar_dbmemo1.Enabled:=false;

tovar_dbmemo2.Enabled:=false;

tovar_button1.Caption:='Редактировать';

i1:=0;

end;

end;

Аналогичным методом описываем событие OnClick для оставшихся кнопок с вкладок «Поставщики» и «Персонал»