Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 944

.pdf
Скачиваний:
3
Добавлен:
30.04.2022
Размер:
672.94 Кб
Скачать

Пример. Создать таблицу «Книги», имеющую поля: шифр книги, название, авторы, цена, год издания, издательство, код области (раздела) знаний, количество экземпляров. Поле «Шифр книги» является ключевым. Описание структуры таблицы представлено в табл. 2.

Таблица 2 Описание структуры таблицы «Книги» (Knigi)

Имя поля

Тип

Размер

Примечание

 

данных

 

 

 

Sh_kn

Текстовый

10

Шифр

книги,

 

 

 

ключ

 

Nazv

Текстовый

50

Название книги

Avt

Текстовый

30

Авторы

 

Zena

Денежный

 

Цена за шт.

G_izd

Числовой

Целое

Год издания

Izd

Текстовый

15

Издательство

Kod_r

Числовой

Целое

Код раздела (об-

 

 

 

ласти) знаний

Kol_ikz

Числовой

Длинное

Количество эк-

 

 

целое

земпляров

 

Описание структуры таблицы Knigi в режиме конструктора представлено на рис. 1.

Рис.1. Описание таблицы в режиме конструктора

9

1.3. Создание схемы базы данных

Для создания схемы данных выбирают вкладку Работа с базами данных и щелкают по кнопке Схема данных.

1.Если схема данных не создавалась ранее, то первоначально появится диалоговое окно Добавление таблицы. Чтобы выбрать таблицы, которые будут связаны друг с другом, выделяют имя таблицы и щелкают по кнопке Добавить. Повторяют эти действия для каждой выбираемой таблицы. После выбора нужных таблиц щелкают по кнопке Закрыть. Если таблица участвует в нескольких связях, то выбирают таблицу только один раз.

2.После щелчка по кнопке Закрыть попадают в окно Схема данных, где находятся все выбранные таблицы.

3.Для формирования связей между таблицами необходимо перетащить поле из одной таблицы на поле другой. Поля, по которым устанавливаются связи, могут иметь разные имена, но должны совпадать по типу и размеру.

4.После того, как процесс перетаскивания поля завершен,

икнопка мыши отпущена, появляется диалоговое окно Изменение связей. В окне отражены имена связанных таблиц и полей и тип связи между ними. Различают два типа связи: “один к одному” и “один ко многим”. Из двух связанных таблиц одна является главной, другая – подчиненной. При связи “один к одному” каждая запись данных главной таблицы соотносится ровно с одной записью подчиненной таблицы. Связь “один ко многим” означает, что каждая запись главной таблицы может быть связана с любым числом записей подчиненной таблицы.

5.В данном окне активизируют флажок Обеспечение целостности данных, можно также активизировать флажки Кас-

кадное обновление связанных полей и Каскадное удаление

связанных полей.

Пример схемы взаимосвязи таблиц представлен на рис. 2. На рисунке две таблицы Knigi и Razdeli связаны между собой

10

связью «один ко многим» по полю Kod_r (код раздела). При этом таблица Razdeli является главной таблицей, а таблица Knigi – подчиненной таблицей.

Рис. 2. Схема взаимосвязи таблиц

1.4.Обеспечение связи приложения с таблицами базы данных

сприменением технологии ADO

Обеспечение связи с таблицами базы данных из приложения, созданного в среде Delphi, с применением технологии ADO целесообразно осуществлять через модуль данных. Для создания модуля данных и настройки связи с таблицами базы данных необходимо осуществить набор действий.

Во-первых, необходимо осуществить запуск Delphi стандартным образом: Пуск, Программы, Borland Delphi 7, Delphi 7.

Откроется окно приложения, в котором автоматически будет создана первая форма Form1.

Во-вторых, необходимо создать модуль данных в проекте для реализации доступа к базе данных: File, New, Data Module. Можно в свойстве Name задать для модуля данных имя DM.

В-третьих, на модуль данных надо поставить из вкладки ADO следующие компоненты: ADOConnection1, столько компонентов ADOTable, сколько будет использоваться таблиц. Затем нужно настроить свойства выбранных компонентов.

11

Выделить компонент ADOConnection1. В свойстве Connection String щелкнуть по кнопке …. В открывшемся диалоговом окне выполнить следующие настройки:

-щелкнуть по кнопке Build (рис. 3), выбрать в списке MS Jet 4.0 OLE DB Provider (провайдер зависит от СУБД, с которой устанавливается связь; в данном случае выбирается провайдер для Access 2003), кнопка Далее;

-в окне «Выберите или введите имя базы данных» выбрать файл с базой данных, кнопка ОК, кнопка ОК.

Рис.3. Окно настройки связи

В свойствах компонента ADOConnection также можно установить значение свойства LoginPrompt = false (чтобы при установке связи с базой данных не спрашивался логин/пароль, если он имеется) и значение свойства Connected=true (чтобы связь с базой была установлена сразу).

Затем настраивают компонент ADOTable. В его свойстве Connection прописывают название компонента ADOConnection (если он единственный, то это будет ADOConnection1), а в свойстве TableName из списка выбирают имя нужной таблицы из базы данных. Также следует установить свойство Active = true, чтобы таблица была доступной для работы.

12

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

Необходимо выделить (щелкнуть) модуль данных. Во вкладке Events выбрать событие onCreate и создать следующую процедуру:

var path:string; begin

ADOConnection1.Close;

path := ExtractFilePath(Application.ExeName)+'Stud.mdb'; AdoConnection1.ConnectionString :=

'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+Path+';Persist Security Info=False';

ADOConnection1.open; ADOTable1.Active := true; ADOTable2.Active := true; end;

Данная процедура автоматически определяет место нахождения базы данных, имеющей имя Stud.mdb, и активирует две таблицы базы данных.

Если модуль данных был создан вторым, то ему соответствует модуль unit2. В тексте данного модуля в разделе uses должно быть написано Forms.

В дальнейшем на формах проекта, где будут размещены формы для ввода и редактирования данных, для связи с таблицами базы данных необходимо поставить компонент DataSource1. Для данного компонента настраивают следующие свойства:

-в модуле, соответствующем созданной форме (например, в модуле unit3), для доступа к модулю данных в разделе implementation выставляют uses unit2;

-в свойстве DataSet выбирают компонент ADOTable для связи с конкретной таблицей.

13

Рекомендуется в конце работы по созданию проекта (приложения) в модуле данных для компонента

ADOConnection1 в свойстве Connected выставить false, свойст-

во ConnectionString очистить. Сохранить и запустить проект. Это делается для того, чтобы в процессе запуска приложения происходило автоматическое определение места нахождения базы данных и программно заполнялась строка

ConnectionString.

При доработке приложения необходимо каждый раз перед дальнейшей разработкой повторять настройку свойств

ConnectionString и Connected для компонента ADOConnection1.

1.5. Создание меню приложения

Обычно меню приложения находится на первой форме. Создание меню приложения осуществляется следующим

образом.

1.Перейти на форму, где будет меню (обычно форма

Form1).

2.На панели компонентов перейти во вкладку Standard, выбрать компоненту Mainmenu и поместить ее на форму.

3.На компоненте вызвать контекстное меню и выбрать пункт Menu Designer…. Открывается диалоговое окно, в котором формируют элементы меню. Для текущего элемента меню необходимо задать подпись.

4.На панели Object (Инспектора объектов) в поле Caption набирать название текущего пункта меню (например, Редактирование) и нажать клавишу Enter.

5.Выделить новый пункт меню (пустой), появившийся справа, и повторить действия п. 4.

6.Для создания меню второго уровня выделить щелчком пункт меню первого уровня и нажать на клавиатуре стрелку вниз. В поле Caption внести название пункта и нажать клавишу Enter. Эти действия повторяют для каждого пункта меню второго уровня (рис.4).

14

7. После создания меню закрывают окно Menu Designer и сохраняют форму. Для сохранения выбирают пункты меню File, Save All, выбирают папку, где должны сохраняться модули.

Рис. 4. Форма, содержащая меню

Привязка пункта меню к форме. Пункты меню должны быть привязаны к вызову определенных форм.

Привязка пункта «Выход» к соответствующему дейст-

вию:

врежиме редактирования осуществить двойной щелчок по пункту «Выход»;

воткрывшейся процедуре набрать Form1.Close; сохранить произведенные действия.

Привязка пункта меню к вызову соответствующей фор-

мы:

создать новую форму (кнопка NewForm, 4-я слева на панели инструментов);

на панели Инспектора объектов в поле Name можно ввести более информационное имя (например, Form2_Knigi) и на-

жать Enter;

вызвать список модулей кнопкой ViewUnit (1-я слева) и выбрать в списке unit1, в тексте процедуры найти слово

15

implementation, для доступа к модулю unit2 ниже этого слова набрать uses unit2;

переключиться на главную форму; дважды щелкнуть по привязываемому пункту меню и в

открывшейся процедуре ввести: имя формы. ShowModal; (на-

пример: Form2_Knigi.ShowModal;);

Проверить вызов формы при выборе пункта меню (кнопка Запуск на панели инструментов или F9).

Выход из режима запуска – закрыть окно первой формы.

Редактирование внешнего вида формы. Можно осуще-

ствить следующие действия по редактированию формы:

встроке Caption задают подпись на русском языке;

встроке Bordericons для biMaximize выбирают False –

это означает запрет на распахивание окна;

встроке Position задают способ выравнивания формы на экране (например, по центру – poDesktopCenter);

встроке Color выбирают цвет заливки формы;

вставка картинки на форму – вкладка Additional, кнопка Image, свойство Picture, кнопка Load, осуществляют выбор файла с картинкой. Для вставленной картинки в панели свойств можно установить в строке stretch значение True (установка размера картинки по размеру формы); в строке transparent значение True (установка прозрачного фона для картинки).

2. СОЗДАНИЕ ФОРМ ДЛЯ ВВОДА И РЕДАКТИРОВАНИЯ ДАННЫХ

2.1. Создание формы для работы с одной таблицей

Формы создают для ввода, редактирования или просмотра данных в одной или нескольких таблицах базы данных.

Создать форму для работы с одной таблицей можно следующим образом.

1. Выбрать или создать новую форму (выбрать - кнопка View Form (2-я кнопка слева), создать - кнопка New Form на панели инструментов (4-я кнопка слева)).

16

2.На форме поставить из вкладки Data Access компонент DataSource. В модуле, соответствующем созданной форме (например, в модуле unit3), для доступа к модулю данных в разде-

ле implementation выставить uses unit2. В свойстве DataSet

компонента DataSource выбрать ADOTable для связи с конкретной таблицей.

3.Выбрать вкладку Data Controls. Щелкнуть по кнопке DBGrid и в форме. Данный компонент служит для отображения записей набора данных в табличной форме. Можно изменить размер формы, растащив границы. Для данного компонента в свойстве DataSource устанавливают значение DataSource1 (это имя присвоено по умолчанию), выбрав его из списка.

4.Сохранить форму (File, Save All).

5.Запустить программу (кнопка RUN на панели инструментов, или F9, или пункты меню RUN, RUN).

Работающая программа открывает непосредственный доступ к данным в выбранной таблице.

Пример формы для работы с одной таблицей представлен на рис. 5. Форма приведена в режиме редактирования.

Рис. 5. Форма в режиме редактирования для работы с одной таблицей

17

2.2. Ввод данных в таблицу с помощью созданной формы

Для добавления записи нужно нажать на клавиатуре клавишу Insert или, находясь на последней записи набора данных, нажать стрелку вниз. Таблица автоматически перейдет в режим добавления новой записи.

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

Отказаться от запоминания записи можно, нажав кнопку

Esc.

Для изменения записи следует переместить указатель текущей записи в нужное место и изменить значения там, где это нужно. Набор данных автоматически перейдет в режим редактирования.

Для удаления записи следует установить на нее указатель текущей записи и нажать Ctrl+Del.

После ввода и редактирования данных вернуться в режим редактирования формы, закрыв окно просмотра формы.

2.3. Создание формы для работы с двумя таблицами

Необходимо в одной форме связать два набора данных (главный и подчиненный) так, чтобы в подчиненном наборе всегда показывались записи, соответствующие текущей записи

вглавном наборе. Для этого поступают следующим образом.

1.Создать форму для главной таблицы, как это было описано выше (создание формы для работы с одной таблицей).

2.Поместить на форму компоненты ADOTable вкладка (ADO) и DataSource (вкладка Data Access) для работы с подчиненной таблицей.

3.Для компонента ADOTable в свойстве Connection выставить имя_модуля_данных.ADOConnection1, в свойстве TableName выбрать имя второй подчиненной таблицы, в свойстве Active выставить true.

18