Меню сайта
Мини-чат
Чтобы добавить сообщение, необходимо авторизоваться.
Главная » Статьи » Не стандартные примеры на Delphi » Базы Данных

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

Очевидно, 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.  
Категория: Базы Данных | Добавил: DelphiAiX (20.05.2012)
Просмотров: 576 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]