IBSQL - для быстрого выполнения SQL-запроса с минимальными накладными расходами. Не имеет локального буфера данных, не совместим с визуальными компонентами;
IBDatabaseInfo - для получения системной информации о свойствах базы данных, соединения и сервера;
IBSQLMonitor - для перехвата и отслеживания SQL-запросов, которые выполняют приложения пр технологии InterBase Express;
IBEvents - для обработки событий сервера InterBase;
IBExtract - для получения метаданных от сервера InterBase;
IBClientDataSet - для получения данных и применения обновлений. Использует внутренние компоненты TIBDataSet И TDataSetProvider.
Компоненты IBTable, IBQuery, IBStoredProc И IBUpdateSQL во многом похожи на свои аналоги механизма BDE.
"Organizer 1.0" - программный продукт, который состоит из нескольких компонентов: планировщик задач, связанный с ним календарь и адресная книга.
Рис.1 Структура приложения "Organizer 1.0".
В качестве основы приложения с помощью IB Expert была разработана база данных ORGANIZER, состоящая из двух таблиц: TBL_EVENTS и TBL_PEOPLE.
Табл.1 Структура таблицы TBL_EVENTS
id_events | date1 | name |
Табл. 2 Структура таблицы TBL_ PEOPLE
id_people | imja | familia | otch | birth | icq | phone_mob | phone_home | phone_work | firm | post | |
phone_work | firm | post | |||||||||
Таблицы между собой не связаны, т.к несут разную смысловую нагрузку и реализуют разные задачи в приложении.
Таблица TBL_EVENTS предназначена для работы планировщика задач. Она содержит данные о введенных событиях (название, дата).
Таблица TBL_ PEOPLE предназначена для работы адресной книги. Она содержит данные о персоне (Ф.И. О, адрес, телефон (дом, раб, сотовый), ICQ, e-mail, дата рождения, название фирмы, должность).
В приложении используются:
главная форма с главным меню, обеспечивающим переход ко всем функциям приложения (frmMain);
формы, используемые Планировщиком задач для просмотра (frmViewEv), редактирования (frmEditEv) и добавления событий (frmAddEv);
формы, используемые Адресной книгой для просмотра (frmBook), добавления (frmAddB) и редактирования записей (frmEditB), а также форма поиска в книге по различным параметрам (frmSearchB);
модуль данных (DM), который содержит в себе компоненты DataSource, IBDataBase, IBTranzaction, IBQuery, обеспечивающие работу с базой данных.
Для реализации просмотра, добавления и редактирования информации в приложении использованы следующие компоненты С++ Builder:
IBDatabase Этот компонент в основном используется в приложениях, работающих на платформе InterBase. Его задачи связаны с общением с удаленным сервером, реализацией транзакций, работой с паролями.
IBTransaction - организует управление транзакциями.
DataSource В качестве источника данных всегда используется размещенный на странице Data Access компонент DataSource. Он связывается с набором данных своим свойством Data Set.
IBQuery - невизуальный компонент набора данных, выполняющий запросы SQL к серверу InterBase.
DBGrid представляет собой таблицу, в которой могут отображаться поля строк, числовые и булевы поля. Для связи этого компонента с набором данных используется только одно свойство - DataSource.
DBNavigator - набор кнопок для навигации по DBGrid.
На главной форме приложения представлено:
главное меню,
календарь,
навигационные кнопки, обеспечивающие быстрый доступ к адресной книге и планировщику задач соответственно,
список событий запланированных на сегодня.
Рис. Главная форма
Файл
Адресная книга (осуществляет переход на форму, отображающую записи Адресной книги - frmBook)
Напоминалка (осуществляет переход на форму, отображающую записи о событиях frmViewEv)
Выход (закрывает приложение)
Адресная книга
2.1 Просмотреть (осуществляет переход на форму, отображающую записи Адресной книги - frmBook)
2.2 Найти человека (осуществляет переход на форму поиска персоны по различным введенным данным - frmSearchB)
2.3 Добавить новую запись (осуществляет переход на форму, добавляющую записи в Адресную книгу - frmAddB)
3. События
3.1 Просмотр событий (осуществляет переход на форму, отображающую записи о событиях frmViewEv)
3.2 Создать напоминание (осуществляет переход на форму, добавляющую записи в Планировщик задач - frmAddEv)
В качестве календаря для приложения был взят компонент C++ Builder TMonthCalendar, который находится во вкладке Win32.
Компонент TMonthCalendar (Календарь) используется для быстрого выбора даты с помощью мыши. Сразу после размещения в форме календарь готов к работе.
Рис.3. Календарь на форме
В красном кружке выделена текущая дата (она же подробнее указана в нижней части календаря), синим подсвечена дата, выбранная с помощью мыши или дата, устанавливаемая в календаре по умолчанию. Слева можно отображать номера недель в году (свойство WeekNumbers). С помощью кнопок в верхней части календаря можно перемещаться по месяцам. Чтобы вернуться к месяцу с текущей датой, достаточно щелкнуть на ней в нижней части календаря.
Кроме информативной, календарь выполняет также одну из основных функций приложения. При двойном щелчке мыши на календарь вызывается форма добавления нового напоминания, что упрощает работу пользователя с программой.
Реализован при помощи компонента DBGrid. Он связан с ресурсом данных DS1 и запросом на выборку qr4, находящимися в модуле данных DM.
При каждом запуске приложения выполняется функция FormCreate, которая выглядит следующим образом:
void __fastcall TfrmMain:: FormCreate (TObject *Sender)
{
MonthCalendar1->Date = Date ();
DM->qr4->Close ();
DM->qr4->SQL->Clear ();
DM->qr4->SQL->Text="SELECT DATE1, NAME FROM TBL_EVENTS where DATE1=: CURRENT_DATE";
DM->qr4->ParamByName ("CURRENT_DATE") - >AsDate = Date ();
DM->qr4->Open ();
DM->qr4->FetchAll ();
}
Здесь запрос qr4 производит выборку данных из таблицы TBL_EVENTS, значение столбца DATE1 которых совпадает с текущей датой.
Планировщик задач вызывается с помощью главного меню: "События", "Просмотр событий". Появляется форма (frmViewEv), которая позволяет просматривать, добавлять, редактировать и удалять записи.
Рис.4 Форма управления планировщиком задач.
На форме представлено содержимое таблицы TBL_EVENTS, с помощью DBGrid. Под таблицей расположены навигационные клавиши, позволяющие перемещаться по записям таблицы вперед и назад. Они реализованы при помощи компонента DBNavigator. Он связывается с базой данных ORGANIZER через свойство DataSet.
Функциональная клавиша "Удалить" удаляет всю текущую запись в DBGrid с помощью функции btnDelClick:
void __fastcall TfrmViewEv:: btnDelClick (TObject *Sender)
{
if (Application->MessageBox ("Вы действительно хотите удалить эту запись??","Подтвердите удаление",MB_OKCANCEL + MB_ICONQUESTION) ! = IDCANCEL)
{
try
{
DM->qr5->Close ();
DM->qr5->SQL->Clear ();
DM->qr5->SQL->Text = "DELETE from TBL_EVENTS where id=: id";
DM->qr5->ParamByName ("id") - >AsInteger=DM->qr1->FieldByName ("id") - >AsInteger;
DM->qr5->Prepare ();
DM->qr5->ExecSQL ();
DM->IBTransaction1->Commit ();
DM->qr1->Close ();
DM->qr1->SQL->Clear ();
DM->qr1->SQL->Text = "SELECT * FROM TBL_EVENTS";
DM->qr1->Open ();
DM->qr1->FetchAll ();
}
catch (. .)
{
DM->IBTransaction1->Rollback ();
ShowMessage ("Error");
}
}
}
При нажатии кнопки "Удалить" функция вызывает диалоговое окно пользователя MessageBox, под названием "Подтвердите удаление", вопросом пользователю "Вы действительно хотите удалить эту запись?" и кнопками "Да" и "Отмена".
При нажатии кнопки "Да" функция выполняет SQL-запрос к таблице TBL_EVENTS, удаляющий запись с текущим ID.
При нажатии "Отмена" функция возвращается на форму управления планировщиком задач.
На форме также представлена возможность просмотра записей таблицы TBL_EVENTS за определенный промежуток времени. Для этого на форму помещены два компонента DataTimePicker, задающие этот промежуток по датам. Нажатие кнопки "Просмотр" реализует следующая функция:
void __fastcall TfrmViewEv:: btnViewClick (TObject *Sender)
{
DM->qr1->Close ();
DM->qr1->SQL->Clear ();
DM->qr1->SQL->Text="SELECT DATE1, NAME FROM TBL_EVENTS where DATE1 between: d1 and: d2";
DM->qr1->ParamByName ("d1") - >AsDate=DateTimePicker1->Date;
DM->qr1->ParamByName ("d2") - >AsDate=DateTimePicker2->Date;
DM->qr1->Open ();
DM->qr1->FetchAll ();
}
После нажатия кнопки "Просмотр" выполняется SQL-запрос, который делает выборку тех записей в таблице TBL_EVENTS, значения столбца которых находятся в промежутке между значениями DataTimePickerов, которые посылаются в запрос в качестве параметров.
Функциональные клавиши "Добавить" и "Редактировать" вызывают формы добавления и редактирования событий соответственно.
Форма вызывается как из главного меню, так и с главной формы приложения нажатием кнопки "Напомнить о…", а также из формы управления планировщиком задач.
Рис.5. Форма добавления нового напоминания
На форме помещены 2 компонента: DateTimePicker1 и Memo1. после ввода соответствующей информации и нажатии на кнопку "ОК" вызывается функция BitBtn1Click: