Опубликован: 17.08.2010 | Доступ: свободный | Студентов: 999 / 59 | Оценка: 4.11 / 3.89 | Длительность: 29:38:00

Самостоятельная работа 15: Создание СУБД средствами BDE (на примере протокола экзамена кандидатов в водители)

Основные методы компонента Table

Основные методы компонента Table
Метод Описание
AddIndex() Создает новый индекс
Append() Добавляет пустую строку к источнику данных и переводит его в режим редактирования
AppendRecord() Добавляет строку, используя указанные значения
ApplyRange() Активизирует диапазон, установленный методами Set() или EditRange()
ApplyUpdates() Сохраняет кэшированные изменения в базе данных
BatchMove() Копирует группу строк из одного источника в другой
Cancel() Отменяет ожидаемое изменение текущей строки
CancelRange() Отменяет установки, сделанные методами Set() или EditRange()
CancelUpdates() Отменяет ждущие изменения, занесенные в кэш
ClearFields() Устанавливает для полей текущей строки значения по умолчанию
Close() Закрывает источник данных (разрывает соединение)
CommitUpdates() Уведомляет кэш о сохранении изменений
CreateTable() Создает программно новую таблицу по информации, содержащейся в свойствах Fields или FieldDefs
Delete() Удаляет в таблице текущую запись
DeleteIndex() Удаляет вторичный индекс из таблицы
DeleteTable() Удаляет соответствующую физическую таблицу в базе данных
DisableControls() Запрещает изменения в интерфейсных компонентах визуализации и управления
Edit() Переводит источник данных в режим редактирования
EditKey() Позволяет изменять значения ключа поиска
EditRangeEnd() Позволяет изменять верхний ключевой предел диапазона
EditRangeStart() Позволяет изменять нижний ключевой предел диапазона
EmptyTable() Удаляет все строки в источнике данных, оставляя только заголовок
EnableControls() Разрешает изменения в интерфейсных компонентах визуализации и управления
FetchAll() Считывает все ожидающие своей очереди строки базы данных
FieldByName() Возвращает объект типа TField, используя имя поля в базе данных
FindFirst() Осуществляет поиск первой записи по условию фильтрации
FindNext() Осуществляет поиск следующей записи, соответствующей заданному критерию.
FindKey() Выполняет точный поиск в источнике данных
FindNearest() Выполняет приближенный поиск с частичным совпадением в источнике данных
GetBookmark() Запоминает состояние набора данных в структуру TBookmark bm
GotoBookmark(bm) FreeBookmark(bm) Восстанавливает сохраненное ранее состояние набора данных и освобождает память, занятую под структуру TBookmark bm
GetFieldNames() Возвращает список полей в источнике данных
GetIndexNames() Возвращает список открытых индексов
GotoKey() Выполняет точный поиск в источнике данных по ключу
GoteNearest() Выполняет приближенный поиск в источнике данных по ключу
Insert() Вставляет пустую строку перед текущей и позволяет ее редактировать
InsertRecord() Вставляет строку, используя заданные значения столбцов
Locate() Осуществляет поиск записи последовательным перебором
LockTable() Блокирует локальную таблицу для монопольного использования
Lookup() Осуществляет поиск записи в источнике и возвращает значения ее полей
MoveBy() Перемещает логический курсор источника данных на заданное количество записей
Open() Открывает источник данных (устанавливает соединение)
Post() Сохраняет ждущие изменения текущей строки, очищая кэш
RenameTable() Переименовывает локальную таблицу. Одновременно переименовываются все сопутствующие таблице файлы (индексные)
RevertRecord() Отменяет кэшированные изменения текущей строки
SetKey() Переводит источник данных в режим поиска по ключу
SetRange() Переводит источник данных в режим поиска по диапазону
SetRangeEnd() Устанавливает верхний предел диапазона
SetRangeStart() Устанавливает нижний предел диапазона
UnlockTable() Разблокирует локальную таблицу от монопольного использования

Основные события компонента Table

Основные события компонента Table
Событие Условие возникновения
AfterCancel После вызова Cancel
AfterClose После закрытия источника данных
AfterDelete После вызова Delete
AfterEdit После вызова Edit
AfterInsert После вызова Insert или Append
AfterOpen После открытия источника данных
AfterPost После вызова Post
BeforeCancel Перед выполнением Cancel
BeforeClose Перед закрытием источника данных
BeforeDelete Перед выполнением Delete
BeforeEdit Перед выполнением Edit
BeforeInsert Перед выполнением Insert и Append
BeforeOpen Перед открытием источника данных
BeforePost Перед выполнением Post
OnCalcField При необходимости ввода значений в вычисляемые поля
OnDeleteError При ошибке удаления записи
OnEditError При ошибке редактирования записи
OnFilterRecord В режиме фильтрации, когда источник данных требует строку
OnNewRecord При добавлении новой записи в источник данных
OnPostRecord При ошибке сохранения записи
OnUpdateError При ошибке во время сохранения кэшированных изменений
OnUpdateRecord При сохранении каждой строки с помощью ApplyUpdates

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

В качестве примера приведем код, создающий таблицу Base1.dbf программным путем. Предполагается, что в приложении имеется соответствующий компонент типа TTable с именем TableBase1 и установленным псевдонимом BaseGai, связанный с базой данных, в которой создается таблица. Ранее мы определили структуру таблицы, которая имеет вид

Структура таблицы DBF\Base1.dbf
Field Name Type Size Dec Пояснения
Question Character 8 Билет/Вопрос
Answer Numeric 1 0 № ответа
Correct Numeric 1 0 № правильного ответа
Result Character 3 Да/Нет (Верно/Неверно)
Time Numeric 2 0 Время в секундах, затраченное на ответ (не используется)
NNN Numeric 6 0 Идентификатор результатов (первичный ключ)

Создание заготовки приложения с помощью мастера Form Wizard

Для сведения посмотрим, как можно быстро сформировать простое приложение с помощью мастера Form Wizard.

  • Запустите C++Builder.
  • Удалите автоматически созданную форму Form1 командой Project/Remove from Project, поскольку мастер Form Wizard сам создаст форму.
  • Запустите мастер командой Database/Form Wizard.
  • Установки первого окна мастера оставьте по умолчанию


    и перейдите к следующему диалоговому окну

  • В раскрывающемся списке Drive or Alias name установите созданный нами ранее драйвер BaseGai, а в списке слева выделите таблицу-файл Base0.dbf.

Перейдите к следующему диалоговому окну.

  • Воспользуйтесь кнопкой >> для включения всех полей в список просмотра-редактирования

Перейдите к следующему диалоговому окну.

  • Отметьте радиокнопку In a grid, чтобы таблица отображалась компонентом DataGrid в виде редактируемой сетки.

Перейдите к следующему диалоговому окну.

  • Оставьте установки следующего диалогового окна по умолчанию


    и щелкните на кнопке Finish. Мастер создаст законченное простое приложение, автоматически разместив на форме необходимые компоненты


  • Запустите приложение и убедитесь в его работоспособности. Не сохраняйте проект, а просто закройте его командой File/Close All.

Создание заготовки приложения

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

  • Создайте новый проект командой File/New/Application и сразу сохраните его в своем каталоге выполнения лабораторной работы. Для этого имя файла user1.cpp измените на UMain.cpp, а имя проекта Project1.bpr измените на Protocol.bpr. Это имя в дальнейшем будет иметь исполнимый файл проекта приложения
  • Установите свою иконку для приложения и объявите заголовок через меню Project/Options

Готовые иконки есть в каталоге Source данной лабораторной работы.

  • Поместите на новую форму следующие компоненты
Компонент Вкладка палитры компонентов
TMainMenu Standard
TControlBar Additional
TToolBar Win32
TSpeedButton Additional
TToolBar Win32
TSpeedButton Additional
TPageControl Win32
TTable BDE
TDataSource Data Access
TStatusBar Win32

Примечание.

  1. Компоненты TToolBar нужно помещать на компонент-контейнер TControlBar.
  2. Компоненты TSpeedButton нужно помещать на компонент-контейнер TToolBar.
Александр Даниленко
Александр Даниленко
Стоит Windows 8 Pro, Visual Studio 2010 Express Edition .