Сканирование версии структуры базы данных

Советы » Компоненты и Базы данных » Сканирование версии структуры базы данных

Спасибо за идеи, высказанные в группах новостей и присланные по электронной почте. Я думаю, что нашел лучшее решение.

Очевидно, BDE содержит номер версии структуры, по крайней мере для файлов Paradox. (Я не могу поручиться за dBase и другие форматы.) Всякий раз при изменении структуры (например, в Database Desktop) BDE увеличивает номер версии. Следующий модуль содержит функцию, которая возвращает версию структуры базы данных:

(*****************************************************************************
* DbUtils.pas
*
* Утилита для работы с базами данных
*
* Создана 09/20/96
*****************************************************************************)

unit

Dbutils; (****************************************************************************) (****************************************************************************) interface

(****************************************************************************) (****************************************************************************) uses

DbTables; function

DbGetVersion(table: TTable): LongInt; (****************************************************************************) (****************************************************************************) implementation

(****************************************************************************) (****************************************************************************) uses

Db, DbiProcs, DbiTypes, {DbiErrs,} SysUtils; {---------------------------------------------------------------------------} (* * Цель: определение номера версии структуры таблицы * Параметры: table (I) - интересующая нас таблица * Возвращаемая величина: номер версии * Исключительная ситуация: EDatabaseError *) function

DbGetVersion(table: TTable): LongInt; var

hCursor: hDBICur; tableDesc: TBLFullDesc; cName: array

[0..255] of

Char; begin

{ копируем имя таблицы в строку 'с' } StrPCopy(cName, table.TableName); { просим BDE создать запись, содержащую информацию об определенной таблице } Check(DbiOpenTableList(table.DBHandle, True

, False

, cName, hCursor)); { получаем запись, содержащую информацию о структуре } Check(DbiGetNextRecord(hCursor, dbiNOLOCK, @tableDesc, nil

)); { возвращаем поле записи, содержащее номер версии структуры нашей таблицы } Result := tableDesc.tblExt.iRestrVersion; Check(DbiCloseCursor(hCursor)); end

; end

.

Другое по теме:

Категории

Статьи

Советы

Copyright © 2023 - All Rights Reserved - www.delphirus.com