Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическая работа БД.doc
Скачиваний:
66
Добавлен:
20.05.2015
Размер:
3.07 Mб
Скачать

3.Компоненту dbNavigator1:

DataSource: DataSource1 {связь DBNavigator1 с DataSource1}

4.Компоненту dbGrid1:

DataSource: DataSource1 {связь DBGrid1 с DataSource1}

Создайте обработчик события для Form1:

procedure TForm1.FormActivate(Sender: TObject);

begin

Table1.Active:=True;

end;

Теперь при открытии формы будет автоматически открываться таблица MainData.DB.

Сохраните модуль и проект. Запустите программу (F9). Рабочее окно программы представлено на рис. 10.

Рис. 10.- Рабочее окно программы

Компонент DBNavigator служит для управления записями таблицы (перемещение, добавление, удаление). При этом все изменения сохраняются в таблице MainData.DB (свойству Store Defs присвойте значение True).

Создание программного модуля простого и параметризованного запросов на основе данных таблицы

Познакомьтесь с теоретическим материалом, касающимся использования объекта типа TQuery в программах для работы с базами данных (приложение П6).

Создание простого запроса

Добавьте к прежней форме новый компонент Query1, DataSource2, DBGrid2, а также два компонента типа TLabel рис. 11.

Рис. 11.- Форма программы для создания простого запроса

1.Компоненту Query1 присвойте следующие свойства:

DatabaseName: DB_DNEVNIK;

DataSource: DataSource1. {связь Query1 с DataSource1}

SQL: Select * from MainData where Comment ='Ivanov'

{выбрать из таблицы MainData.db все записи со значением ”Ivanov”поля Comment}

2. Компоненту DataSource2:

DataSet: Query1; {связь Query1 с DataSource2}

3.Компоненту dbGrid2:

DataSource: DataSource2. {связь DBGrid2 с DataSource2}

4. Обработчик события активации формы Form1 перепишите следующим образом:

procedure TForm1.FormActivate(Sender: TObject);

begin

Query1.Active:=True;

end;

Запустите программу (F9). Результат работы представлен на рис. 12.

Рис. 12. – Результат работы программы по созданию простого запроса

Можно не менять свойство SQL компонента Query1, а изменить обработчик события для Form1 следующим образом:

procedure TForm1.FormActivate(Sender: TObject);

begin

Query1.SQL.Add('Select * from MainData where Comment="Ivanov"');

Query1.Active:=True;

end;

Создание параметризованного запроса

1. Задаем текст SQL запроса в компоненте Query1:

SQL: Select * from MainData where Comment= :NameStr

2. Обработчик события для Form1 перепишите следующим образом:

procedure TForm1.FormActivate(Sender: TObject);

begin

Query1.Params[0].AsString:='Petrov';

Query1.Active:=True;

end;

3. Запустите программу (F9). Результат работы представлен на рис. 14.

Рис. 14. – Результат работы программы по созданию параметризованного запроса

Индивидуальные задания

Задание: создать таблицу базы данных сответстующей предметной области с помощью утилиты Database Desktop, программные модули открытия и редактирования таблицы, осуществления простого и параметризованного запросов.

Варианты задач

1.Городской транспорт

Список характеристик:

Вид транспорта, номер маршрута, начальная остановка, конечная остановка, время в пути, примечание.

2.Аэропорт

Список характеристик:

Номер рейса, пункт назначения, дата рейса, тип самолета, время вылета, время в пути, сведения о пассажире.

3. Персональные ЭВМ

Список характеристик:

Фирма-изготовитель, тип процессора, тактовая частота, объем ОЗУ, объем жесткого диска, дата выпуска.

4.Университет

Список характеристик:

Номер, ФИО, адрес и должность преподавателя, название предмета.

5.Деканат

Список характеристик:

Kод группы, ФИО, телефон слушателя, код, название предмета, код сессии и оценки по предмету.

6. Оптовая база

Список характеристик:

Код товара, название товара, количество на складе, стоимость единицы товара, примечания-описание товара.

7.Сеть магазинов

Список характеристик:

Номер, название, адрес и телефон магазина, ФИО и ИНН владельцев магазина.

9. Личные данные о студентах

Список характеристик:

ФИО студента, курс, факультет, специальность, дата рождения студента, сведения о семье.

10. Железнодорожный вокзал

Список характеристик:

Номер поезда, пункт назначения, номер путей и платформы, дата прибытия, дата отбытия, ФИО пассажира.

лабораторная работа №

ОРГАНИЗАЦИЯ ВЗАИМОДЕЙСТВИЯ ПРИКЛАДНОЙ ПРОГРАММЫ С БАЗОЙ ДАННЫХ НА ОСНОВЕ ТЕХНОЛОГИИ ADO

Цель лабораторной работы: приобрести практические навыки организации взаимодействия приложения с однотабличной базой данных на основе технологии ADO.

Задачи лабораторной работы:

• Изучить наборы компонентов «Data Access», «ADO» и «Data Controls».

• Отработать технологию дополнения, удаления и коррекции записей в таблице.

• Закрепить навыки организации взаимодействия форм.

Указания по выполнению работы

Среда программирования Borland Delphi7 представляет максимально широкие возможности организации взаимодействия пользователя с базами данных. Данное взаимодействие осуществляется по схеме, приведенной на рис. 1. Следует отметить, что база данных может быть использована несколькими приложениями.

Рис. 1. Взаимодействие приложения с БД

Для многих баз данных в BDE и в ADO предусмотрены свои собственные драйверы, позволяющие обходиться без ODBC. В данной работе взаимодействие с базой данных будем строить через компоненты ADO (ActiveX Data Objects)–технология Microsoft для доступа не только к базам данных, но и ко многим другим объектам.

Как и в работе №5 задачей будет разработка простейшего ежедневника.

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

1. Запустите MS-Access: Пуск\Программы\Microsoft Access.

2. Выберите Создание базы данных\Новая база данных.

3. Укажите папку для создания базы данных Lab на Вашем диске, имя базы данных db1.mdb.

4. Далее выберите Создание таблицы в режиме конструктора.

5. Создайте таблицу следующего вида табл. 1. Имя таблицы установите MainData, ключевые поля не задавайте и введите в нее три записи, как показано на рис. 2.

Таблица 1.

Структура исходной таблицы

Имя поля

Тип данных

Формат

DateS

Дата/время

Краткий формат даты

FromTime

Дата/время

Краткий формат времени

ToTime

Дата/время

Краткий формат времени

Comment

Поле МЕМО

Phone

Текстовый

30 символов

Рис. 2. Ввод записей в таблицу MainData в MSAccess

6. Закройте MS Access.

7.Запустите Delphi7: Пуск\Программы\Borland Delphi7\ Delphi7. Создайте новый проект. Сохраните его в новую папку на Вашем диске под именем Lab.

8. Для эффективной работы с данными следует создать специальный модуль данных (Data Module)–File/New/Data Module. В данный модуль добавьте компонент ADOTable из группы компонент ADO (рис. 3).

Рис. 3. Создание модуля данных

9.В свойстве ConnectionString компоненты ADOTable вызовите диалог формирования строки соединения (Connection String) и нажмите в нем Built…, далее укажите тип данных -Microsoft Jet OLE DB Pro­vider (драйвер для доступа к базам данных MSAccess) рис. 4. На закладке Connection (Подключение) в первой строке впишите путь к вашей базе данных (в данном случае D:\User\OLGA\РГОТУПС\Информатика\db1.mdb). Проверьте подключение, установите флажок Blank Password (Пустой пароль) и закройте диалог.

10.Также установите для ADOTable1 следующие свойства: TableNameMainData, Active–True.

11. Для организации отображения данных следует включить в модуль данных (DataModule2) еще один компонент–Источник данных (Data Source), он находится на закладке Data Access панели ком-понент. Установите для него в свойстве DataSet значение ADOTable1.

Компонент DataSource служит передаточным звеном между базой данных и элементами их отображения.

12.Перейдите к редактированию модуля Unit1 и в раздел implementation после ключевого слова Uses модуля Unit1 впишите модуль Unit2 – т.к. созданный модуль данных будет использоваться в форме Form1.

13.Разместите на форме Form1 компонент DBGrid (закладка Data Controls). Установите его свойство DataSource в DataModule2. DataSource1. В результате на форме должна быть таблица с открытой в ней БД рис.5.

14.Для компоненты DBGrid1 зайдите в редактор свойства Columns, добавьте таблице все пять колонок и, изменяя у них свойство Title\ Caption, сформируйте заголовки. Кроме того, удалите колонку, соответствующую полю Comment рис.6.

Рис. 4. Настройка свойства соединения с БД

Рис. 5. Вид формы Form1 с размещенным на ней компонентом TDBGrid

Рис. 6. Установка заголовков колонок

15. Добавьте на форму Form1 компонент TDBMemo. Установите для него свойства DataSource=DataModule2.DataSource1 и DataField = Comment рис. 7.

Рис. 7. Окно работающей программы с компонентом DBMemo1

16. В модуле данных нажмите на правую кнопку на элементе Fields, входящем в DataSource1 (рис. 8). Выберите пункт Add all fields.

Рис. 8. Выбор полей для DataSource1

17. Для полей FromTime и ToTime установите в свойстве DisplayFormat значение hh:nn (часы:минуты).

18. Добавьте на форму Form1 главное меню MainMenu1 с пунктами Файл (Выход), Поиск (По дате, По Телефону, Сброс фильтра) и Событие (Добавить, Удалить, Редактировать) рис. 9.

Рис.9. Окно работающей программы с компонентом MainMenu1

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

procedure TForm1.N2Click(Sender: TObject);

var

S1:PChar;

begin

S1:=' Вы действительно желаете закрыть программу?';

//-вызов окна сообщения запроса с двумя кнопками “Да” и “Нет”

if Application.MessageBox(S1,'Запрос', MB_YESNO)=IDYES

then Close;

end;

20.Отключите возможность изменения размеров окна. Для этого в свойстве BorderStyle формы Form1 установите значение bsSingle.

21.Создайте форму для ввода и редактирования записей по образцу, приведенному на рис. 10. Создав новую форму, впишите в ее раздел Uses модуль Unit2 (напомним, что это модуль данных). Для строк ввода используйте компонент TDBEdit (закладка Data Controls) и установите для них свойство DataSource= DataModule2.DataSource1 и DataField требуемое поле БД. В раздел implementation после ключевого слова Uses модуля Unit1 впишите модуль Unit3.

Рис. 10. Форма Form3, предназначенная для ввода и корректировки данных таблицы MainData

  1. Общая схема работы с данной формой представления на Рис. 11.

Рис. 11. Алгоритм процедур добавления и корректировки записей

В соответствии с этой схемой скорректируйте процедуру обработки нажатия пункта меню Событие Добавить следующим образом:

procedure TForm1.N7Click(Sender: TObject); begin

{Добавили запись в таблицу}

DataModule2.Adotable1.Insert;

{Устанавливаем текущие значения дат и времени в новой записи}

DataModule2.Adotable1.FieldByName('DateS').Value:= Date(); DataModule2.Adotable1.FieldByName('FromTime').Value:= Time(); DataModule2.Adotable1.FieldByName('ToTime').Value:= Time(); if Form3.ShowModal=mrOK then

{Фиксируем изменения}

DataModule2.ADOTable1.Post

else

{Удаляем запись}

DataModule2.ADOTable1.Delete;

end;

23. Скорректируйте процедуры обработки нажатия пунктов меню Событие \ Удалить и Событие \ Редактировать следующим образом:

procedure TForm1.N8Click(Sender: TObject);

// Событие / Удалить

begin

{Удаление записи}

DataModule2.ADOTable1.Delete; end;

procedure TForm1.N9Click(Sender: TObject);

// Событие / корректировать

begin if Form3.ShowModal=mrOK then

{Фиксируем изменения}

DataModule2.ADOTable1.Post

else

DataModule2.ADOTable1.Cancel; end;

24.Сохраните, запустите проект и проверьте его работу. Добавьте несколько записей в таблицу MainData. Откройте базу данных db1.mdb в MS Access и посмотрите на внесенные изменения.

25.Обработайте пункты меню «Поиск» формы Form1 путем установки фильтров на таблицу. Для этого создайте еще две формы по образцам, представленным на рис. 12.

Рис. 12. Формы для установки фильтров (Form4 и Form5)

26.Впишите в модуле Unit1 после ключевого слова implementation в разделе Uses модули Unit4 и Unit5. Сформируйте обработчики событий меню Поиск:

procedure TForm1.N5Click(Sender: TObject); begin

// Фильтруем по дате

if Form4.ShowModal=mrOK then begin with DataModule2.ADOTable1 do begin

Filter := 'DateS='+ DateToStr(Form4.MonthCalendar1.Date); Filtered := True;

end end; end;

procedure TForm1.N6Click(Sender: TObject);

// Фильтруем по телефону

begin if Form5.ShowModal=mrOK then begin with DataModule2.ADOTable1 do

begin

Filter := 'Phone = '+Form5.Edit1.Text;

Filtered := True;

end end;

end;

procedure TForm1.N10Click(Sender: TObject);

// Cнимаем фильтры

begin

DataModule2.ADOTable1.Filter := ''; DataModule2.ADOTable1.Filtered := False; end;

27. Сохраните, запустите проект и проверьте его работу.