Мир программирования

 


Найти: на:


Меню
Партнеры
Счетчики
Реклама

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


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

Очевидно, 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 .

 

[Оглавление]

Опрос

Конкурсы
Реклама

 

Web дизайн: Бурлаков Михаил    

Web программирование: Бурлаков Михаил

Используются технологии uCoz