on E:EDBEngineError do ShowMessage('Ошибка инициализации BDE' ) ;
end;
end;

procedure TMainForm.FormClose(Sender: TObject; -var Action: TCloseAction); begin try

finally

if hDB <> Nil then DbiCloseDatabase(hDB);// Закрытие базы данных DbiExit; // Закрытие сеанса работы с BDE

end end;
procedure TMainForm.AliasesListChange(Sender: TObject);

begin try

if hDB <> Nil

then DbiCloseDatabase(hDB);// Закрытие базы данных DbiOpenDatabase // Открытие базы данных

(

PChar(AliasesList.Text), // Псевдоним базы данных Nil, // Тип базы данных

dbiReadWrite, // Режим редактирования данных

dbiOpenShared, // Режим разделения данных

Nil, // Пароль

О, // Число дополнительных параметров

Nil, // Перечень полей для доп. параметров

Nil, // Список доп. параметров

hDB // Дескриптор базы данных

) ;
DbiSetPrivateDir('с:\temp');// Определение временного каталога DbiOpenTableList(hDb, False, False, '*.DB', hCursor) ;
TablesList.Items.Clear;
TablesList.Clear;

while DbiGetNextRecord(hCursor, dbiNOLOCK, OTblDesc, nil) = dbiErr_None

do TablesList.Items.Add(TblDesc.szName);
DbiCloseCursor(hCursor);

except

on E:EDBEngineError do ShowMessage('Ошибка открытия базы данных');
end;
end;

procedure TMainForm.EmptyBtnClick(Sender: TObject); begin try

DbiEmptyTable(hDB, Nil, PChar(TablesList.Text), ' ' ) ;

except

on Е:EDBEngineError do ShowMessage('Неверно задана таблица' ) ;
end;
end;

end.

При открытии главной формы (метод-обработчик FormShow) функция Dbilnit осуществляет инициализацию BDE. Затем функция DbiOpenDatabaseList создает в памяти временную таблицу, в которую записываются характеристики каждой зарегистрированной базы данных. Для этого применяется структура DBDesc. Курсор hcursor обеспечивает доступ к записям о базах данных.

После этого функция DbiGetNextRecord позволяет осуществить последовательное считывание имен псевдонимов баз данных (для этого в параметре передается указатель на структуру DBDesc) и их запись в список компонента AliasesList ТИПЭ TComboBox.

При выборе из этого списка конкретного псевдонима работает метод-обработчик AliasesListChange. В нем открывается соответствующая база данных (функция DbiopenDatabase), доступ к которой в дальнейшем осуществляется через дескриптор hDB.

Функция DbiOpenTableList создает временную таблицу в памяти, в которую помещаются данные о таблицах выбранной базы данных в соответствии с форматом структуры TBLBaseDesc. Функция DbiGetNextRecord позволяет передать эту информацию в список компонента TablesList типа TComboBox

При щелчке на кнопке EmptyBtn в методе-обработчике EmptyBtnClick работает функция DbiEmptyTable, которая очищает выбранную ранее в компоненте TabiesList таблицу.

Теперь рассмотрим пример простейшего приложения, которое может отображать два поля из таблицы COUNTRY.DB в демонстрационной базе данных DBDEMOS. Эта база данных поставляется в комплекте Delphi. В примере использованы только функции API BDE.

Проект называется DirectBDE и имеет только одну форму, в которой отображаются сведения из таблицы COUNTRY.DB о государствах и их столицах (рис. 16.5). Кнопки в нижней части формы позволяют перемещаться по набору данных.


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Июнь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс