Цели и задачи
Развивать умения по формированию целей и задач урока; изучить новые понятия; изучить свойства палитры компонентов ADO; научиться разрабатывать приложение, объединив ресурсы таблицы базы данных и инструментов языка программирования для разработки приложения «Телефонный справочник» на основе взаимодействия Access и Delphi;; содействовать творческому подходу к выполнению заданий; обеспечить усвоение выполнением задания на закрепление
ADO (от англ. ActiveX Data Objects — «объекты данных ActiveX») — интерфейс программирования приложений для доступа к данным, разработанный компанией Microsoft (MS Access) и основанный на технологии компонентов ActiveX. ADO позволяет представлять данные из разнообразных источников (реляционных баз данных, текстовых файлов и т. д.) в объектно-ориентированном виде.
SQL – структурированный язык запросов (structure query language). SQL - формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных (СУБД).
На прошлом уроке мы рассмотрели, как создать, заполнить таблицу в базе данных СУБД Access, рассмотрели, что такое формы, что такое запросы и отчеты. Сегодня мы продолжим изучать технологии работы с базами данных и создадим приложение «Телефонный справочник» с помощью таблицы Access и программы на языке программирования Delphi. Для того, чтобы начать создавать приложение, ответьте на вопросы.
Мозговой штурм
· Что такое форма, для чего она создается и каково ее предназначение в СУБД Access?
· Как выглядит, функционирует приложение для поиска информации (поисковая система, справочник)?
· Где хранится информация в подобных приложениях, откуда извлекается результат запроса?
· Какие изученные компоненты могут быть использованы для разработки программы «Справочник»?
· Какой функционал ПО можно использовать в большой таблице, если визуальный поиск невозможен?
1 ситуация - представьте, что мы имеем дело с большим объемом информации, справочником абонентов, количество которых достигает 150 000 человек. Конечно, для того чтобы пролистать подобную таблицу потребуется несколько часов, а то и дней. Как быть в данном случае, если нам надо срочно найти информацию, а стандартный функционал СУБД не дает такой возможности?
2 ситуация – необходимо вести учет книг, журналов, периодических изданий, их приход, расход и списание; вести учет читателей этих книг, их личные карточки и выдачу книг. Известно, что представляемая информация является связанными таблицами и при удалении записи книги из таблицы «Расход», эта же книга удалилась из списка книг читателя «Личные карточки читателей». Как это организованно?
3 ситуация – вы вводите данные в строку запроса поисковой системы в Internet. Введенный результат запроса, т.е. ответ сервера максимально совпадает с текстом, который вы ищете, и выдан в 1 строку результатов поиска, по следующим критериям: на найденной странице ключевые слова удовлетворяют поиску; запрашиваемый текст встречается максимально часто; большое количество переходов на эту страницу после подобных запросов; сайт является сервисом поисковой системы и предлагает свой функционал. Как организована работа поисковой системы, и максимально полезный уровень поиска если известно, что сервер поисковой системы не хранит у себя копии сайтов, а только лишь организует работу с информацией находящихся на них?
На уроке мы рассмотрим подробно 1 ситуацию, а именно разработаем приложение, в котором будет реализован поиск информации и для этого будут использованы уже известные нам элементы БД: процесс создания базы данных, таблицы БД и их сохранение, в том числе известные понятия SQL и ADO, которые нам помогут в разработке. Давайте повторим, как разработать новую БД и создать в ней таблицу?
Задание 1. Создать папку с именем «Data» на диске «С:/». Открыть СУБД Access, создать новую БД с именем и расширением: «bd.mdb» и сохранить ее в папке c именем «Data» на диске «С:/». Cоздать новую таблицу с именем table1. Создать в режиме конструктора поля в таблице table1: ФИО, Год_рождения, Адрес, Телефон. Сохранить таблицу. Открыть таблицу для редактирования. Заполнить таблицу 1 записью. Время – 5 мин.
Пример 1. Задание 2. Создание формы и программы приложения «Телефонный справочник» - 25 мин
1 шаг – создайте новый проект, сохраните проект в папку с именем «Data» на диске «С:/», в которой уже сохранена ваша база данных bd с вашей таблицей table1.
2 шаг - разместите на форме следующие компоненты: TPanel, TEdit, TComboBox и TButton на TPanel, c закладки компонентов Standart, TDBGrid c закладки компонентов DataControls, TDataSource c закладки компонентов DataAccess. С закладки компонентов ADO: TADOCoonection, TADOQuery, TADOTable.
3 шаг - измените свойства компонентов следующим образом, в соответствии с примером из таблицы
Название компонента | Свойство компонента | Значение свойства |
TPanel | Align | alTop |
Caption | ||
TEdit | Text | |
TButton | Caption | Найти |
TComboBox | Text | Что будем искать? |
Items | ФИО Год_рождения Адрес Телефон | |
DBGrid | Align | alClient |
Сolumns [0] | FieldName | ФИО |
Сolumns [1] | FieldName | Год_рождения |
Сolumns [2] | FieldName | Адрес |
Сolumns [3] | FieldName | Телефон |
DataSource | DataSource1 | |
TDataSource | DataSet | AdoQuery1 |
TAdoConnection | ConnectionString | Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\bd.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=False |
LoginPromt | False | |
TAdoTable | ConnectionString | Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Data\bd.mdb;Mode=ReadWrite|Share Deny None;Persist Security Info=False |
TableName | table1 | |
TAdoQuery | Connection | AdoConnection1 |
4 шаг – событие OnCreate компонента Form1. Напишите между begin и end в процедуре procedure TForm1.FormCreate(Sender: TObject); следующее
ADOQuery1.SQL.Clear; // очистка ранних запросов
ADOQuery1.SQL.Add(‘select * from table1’); // запрос на извлечение информации из таблицы
ADOQuery1.Active:=true;
Сохраните проект, скомпилируйте программу, запустите приложение. Опишите полученный результат.
5 шаг – Поиск в базе данных. Событие OnClick компонента Button1. Напишите между begin и end в процедуре procedure TForm1.Button1Click(Sender: TObject); следующее
ADOQuery1.Filtered:=true;
6 шаг – Событие OnСhange компонента Edit1. Напишите между begin и end в процедуре procedure TForm1.Edit1Change(Sender: TObject); следующее
if Length(Edit1.Text) > 0 then
begin
ADOQuery1.Filtered:=false;
ADOQuery1.Filter:=Combobox1.Text + ' LIKE ' + #39 + Edit1.Text + '%' + #39;
end
else ADOQuery1.Filtered:=false;
Сохраните проект, скомпилируйте программу, запустите приложение. Опишите полученный результат.
Пример и задание выполнено. На разработку программы, которая найдет запрашиваемую информацию, ушло не более 10 минут. Так, какую основную функцию несет разработка подобной программы? Так как мы работаем с данными из таблицы БД, которые можно добавлять и удалять, то давайте научимся, не открывая СУБД добавлять и удалять записи. Для чего может понадобиться данная возможность в подобных программах, например в 1С?
Пример 2. Задание 3. Добавление и удаление записей из БД на примере проекта «Телефонный справочник»
1 шаг – добавим в существующий проект еще 2 компонента TButton («Добавить», «Удалить»), а так же создадим новую форму Form2 со следующими компонентами и их свойствами. Сохраним проект
Название компонента | Свойство компонента | Значение свойства |
TLabel1 | Caption | ФИО |
TLabel2 | Caption | Год_рождения |
TLabel3 | Caption | Адрес |
TLabel4 | Caption | Телефон |
TEdit1-TEdit4 | Text | |
TButton1 | Caption | Добавить |
2 шаг – Удаление записи. Событие OnClick компонента Button3. Напишите между begin и end в процедуре procedure TForm1.Button3Click(Sender: TObject); следующее
try
if Application.MessageBox('Удалить запись из БД?','Сообщение БД',MB_YESNO)=IDYES //диалог
then begin
form1.ADOQuery1.Delete; // удаление записи указанной щелчком ЛКМ
end; except on e:Exception do end;
Сохраните проект, скомпилируйте программу, запустите приложение. Опишите полученный результат.
3 шаг – Связь первой и второй формы для ввода данных для добавления записи в таблицу БД. Событие OnClick компонента Button2. Напишите между begin и end в процедуре procedure TForm1.Button2Click(Sender: TObject); следующее
Form2.Show;
4 шаг – Добавление записи. Откройте вторую форму для редактирования программы. Событие OnClick компонента Button1 на Form2. Напишите между begin и end в процедуре procedure TForm1.Button1Click(Sender: TObject); следующее
try
if (Trim(form2.edit1.Text)='') or (Trim(form2.edit2.Text)='') or (Trim(form2.edit3.Text)='') or (Trim(form2.edit4.Text)='') then begin exit; // проверка на ввод данных
end;
form1.ADOQuery1.Insert; // оператор указывающий на ввод данных
form1.AdoQuery1.FieldByName('ФИО').AsString:=form2.Edit1.Text; // заполнение поля ФИО
form1.AdoQuery1.FieldByName('Год_рождения').AsString:=form2.Edit2.Text; // заполнение поля Год_..
form1.AdoQuery1.FieldByName('Адрес').AsString:=form2.Edit3.Text; // заполнение поля Адрес
form1.AdoQuery1.FieldByName('Телефон').AsString:=form2.Edit4.Text; // заполнение поля Телефон
form2.Edit1.Clear; // очистка памяти
form2.Edit2.Clear;
form2.Edit3.Clear;
form2.Edit4.Clear;
form1.AdoQuery1.Insert; // ввод данных
except // проверка на ошибки ввода данных
on e:Exception do
end;
form1.ADOQuery1.Insert;
end;
Сегодня мы разработали систему управления базой данных, т.е. приложение, с помощью которого можно извлекать информацию из таблицы, а так же производить удаление и добавление записей. Приведите еще примеры, где может быть использована данная возможность программного обеспечения? Выполните задание 4 самостоятельно.