Урок 38 Использование БД Access.
April 15, 2007
в колонках играет Nazareth - Cocaine
Этот урок опять о базах данных. Но если раньше мы сами создавали и использовали бд, то сегодня мы будем загружать в программу базу формата Access(входит в MS Office). Урок взят с хбз какого сайта. Надеюсь автор не обидится.
Итак, начнем :
В данном примере я использовал Access 2000, но если у Вас установлена более старая версия Access, то можете работать и на более старой версии.
И так, загружаем Access, формируем файл новой БД под именем "tel.mdb", открываем закладку "Таблицы", нажимаем кнопку создать, в появившейся форме выбирает пункт "Конструктор" и нажимаем кнопку "OK". Перед нами конструктор таблиц, наша БД будет состоять из одной таблицы, а таблица из 7-ми полей. Приступаем к формированию полей, введём следующие поля:
Имя поля - Тип данных
"Телефон" - "Текстовый"
"Абонент" - "Текстовый"
"Город" - "Текстовый"
"Улица" - "Текстовый"
"Дом" - "Текстовый"
"Номер офиса-квартиры" - "Текстовый"
Поле "Телефон" сделаем ключевым, для этого пеместим курсор в поле "Телефон" и в верхнем меню выберем: "Правка"->"Ключевое поле". Установку размеров полей я оставляю на ваше усмотрение.
Теперь осталось сохранить нашу таблицу, сохраните её под именем "Телефоны".
Регистрация БД в Windows.
Созданный нами файл tel.mdb это ещё не полноценная СУБД, чтобы превратить её в базу
клиент-сервер нужно зарегистрировать её в операционной системе. Рассмотрим как это сделать в Windows98.
Открываем "Панель управления" и выбираем пункт "ODBC Data Sources (32bit)", во вкладке "User DSN" нажимаем кнопку "Add...",
далее выбираем драйвер "Microsoft Access Driver (*.mdb)", затем в поле "Data Sourse Name" введём название нашей базы-"telefon1", далее нажимаем кнопку "Select" и выбираем созданный нами файл "tel1.mdb",
при желании можно задать имя и пароль для доступа к БД, нажав на кнопку "Advanced...", после этого жмём кнопку "ОК". Теперь наша БД зарегистрирована.
Создание псевдонима в BDE.
Для доступа приложений к данным Borland C++ Builder использует механизм псевдонимов, описывающий доступ к конкретным источникам данных. Но так как мы уже зарегистрировали нашу БД, псевдоним должен уже быть. Проверьте это, запустив BDE Administrator, если Вы всё сделали правильно, в закладке Databases должно присутствовать название "telefon1", кликнув по нему двойным счелчком мыши можите посмотреть параметры.
Подготовка к созданию проекта.
Теперь когда БД сформирована, можно приступать к созданию программы для работы с нашей БД. Запускаем Borland C++ Builder 5.0, сохраняем форму как "tel.cpp", а сам проект как "tel1.bpr".
Размещение необходимых компонент.
Нам понадобится три основных компонента для доступа к нашей БД:
TDataSource-действует как посредник между компонентами типа TDataSet(TTable,TQuery и др.)и компонентами Data Controls(элементы управления, обеспечивающие отображение данных);
TTable-необходим для доступа к таблице базы данных;
TDBGrid-необходим для просмотра и редактирования таблиц баз данных.
Эти компоненты находятся на закладках "Data Access" и "Data Controls".
Вынесем компонент TTable и установим его следующие свойства:
DatabaseName-"telefon1" (это наша БД);
TableName-"Телефоны" (это наша единственная таблица в БД);
Active-true(указывает открыта или нет таблица).
Далее разместим компонент TDataSource, свойству DataSet присвоим значение
Table1, а AutoEdit значение false.
Теперь разместим компонент TDBGrid и настроим его свойства:
Align-alClient(будет в размер формы контейнера);
DataSource-DataSource1(привяжет к компоненту посреднику).
Управление БД осуществим через меню, для этого вынесем компонент MainMenu
и создадим следующие пункты меню:
БД:
В начало
В конец
На следующую
На предыдущую
Редактирование
Вставка
Удалить
Сохранить
Отменить
-
Выход
Создание обработчиков событий.
Теперь нам необходимо написать функции для управления нашей БД. Для этого нам потребуются следующие методы компонента TTable:
First()-этот метод перемещает указатель текущей записи на первую запись;
Last()-этот метод перемещает указатель текущей записи на последнюю запись;
Eof-это свойство принимает значение true, если указатель текущей записи находится на последней записи;
Bof-это свойство принимает значение true, если указатель текущей записи находится на первой записи;
Next()-это свойство переводит указатель текущей записи на следующую запись;
Prior()-это свойство переводит указатель текущей записи на предыдущую запись
Edit()-этот метод перебодит таблицу в режим редактирования;
Insert()-этот метод переводит таблицу в режим вставки;
Delete()-этот метод удаляет запись;
Post()-этот метод сохраняет изменённую таблицу;
Cancel()-этот метод отменяет внесённые изменения, не сохранённые физически.
Начнём создавать обработчики от событий меню:
В начало
void __fastcall TForm1::N2Click(TObject *Sender)
{
Table1->First();
}
В конец
void __fastcall TForm1::N3Click(TObject *Sender)
{
Table1->Last();
}
На следующую
void __fastcall TForm1::N4Click(TObject *Sender)
{
if(!Table1->Eof)Table1->Next();
}
На предыдущую
void __fastcall TForm1::N5Click(TObject *Sender)
{
if(!Table1->Bof)Table1->Prior();
}
Редактирование
void __fastcall TForm1::N6Click(TObject *Sender)
{
Table1->Edit();
}
Вставка
void __fastcall TForm1::N7Click(TObject *Sender)
{
Table1->Insert();
}
Удалить
void __fastcall TForm1::N8Click(TObject *Sender)
{
Table1->Delete();
}
Сохранить
void __fastcall TForm1::N9Click(TObject *Sender)
{
if((Table1->State==dsEdit)|| (Table1->State==dsInsert))Table1->Post();
}
Отменить
void __fastcall TForm1::N10Click(TObject *Sender)
{
Table1->Cancel();
}
Выход
void __fastcall TForm1::N12Click(TObject *Sender)
{
if((Table1->State==dsEdit)|| (Table1->State==dsInsert))
{
int ind=MessageBox(0,"Сохранить изменённые данные?","Вопрос",MB_YESNOCANCEL);
if(ind==IDYES) Table1->Post();
else if(ind==IDNO) Close();
else return;
}
Close();
}
Author of article - [ArtuR] 2007
www.builderhelper.3dn.ru
builder.helper@rambler.ru