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

 


Найти: на:


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

Перемещение таблиц


Здесь я привожу примеры программ, которые я использую для копирования и удаления таблиц. Необходимые для работы модули: DB, DBTables, DbiProcs,DbiErrs, и DbiTypes. Вам всего лишь необходимо указать каталог расположения, исходное имя таблицы, каталог назначения и имя таблицы, куда будет скопирована исходная таблица и BDE скопирует таблицу целиком со всеми индексами. Процедура удаления в качестве входных параметров использует каталог расположения и имя таблицы, при этом BDE удаляет как саму таблицу, так и все файлы, связанные с ней (индексы и т.п.). Для тестирования данные процедуры были помещены в новое приложение и мне пришлось их немного отредактировать, чтобы удалить некоторые зависимости, которые были связаны с главной формой приложения. Теперь процедуры являются полностью автономными и могут быть помещены в отдельный модуль. (Не забудьте включить его в список используемых модулей). Пользуйтесь на здоровье!

 

 

procedure TConvertForm.CopyTable(FromDir, SrcTblName, ToDir, DestTblName: String);
var

DBHandle: HDBIDB;

ResultCode: DBIResult;

Src, Dest, Err: Array [ 0 .. 255 ] of Char;

SrcTbl, DestTbl: TTable;

begin

SrcTbl := TTable.Create(Application);

DestTbl := TTable.Create(Application);

try

SrcTbl.DatabaseName := FromDir;

SrcTbl.TableName := SrcTblName;

SrcTbl.Open;

DBHandle := SrcTbl.DBHandle;

SrcTbl.Close;

ResultCode := DbiCopyTable(DBHandle,false,

StrPCopy(Src,FromDir + '\' + SrcTblName), nil ,

StrPCopy(Dest,ToDir + '\' + DestTblName));

if (ResultCode <> DBIERR_NONE) then

begin

DbiGetErrorString(ResultCode,Err);

raise EDatabaseError.Create( ' При копировании ' +

FromDir + '\' + SrcTblName + ' в ' +

ToDir + '\' + DestTblName + ' ,'

+ 'BDE сгенерировал ошибку '''

+ StrPas(Err) + '''' );

end ;

finally

SrcTbl.Free;

DestTbl.Free;

end ;

end ;

procedure TConvertForm.DeleteTable(Dir, TblName: String );
var

DBHandle: HDBIDB;

ResultCode: DBIResult;

tbl, Err: Array [ 0 .. 255 ] of Char;

SrcTbl, DestTbl: TTable;

SrcTbl := TTable.Create(Application);

try

SrcTbl.DatabaseName := Dir;

SrcTbl.TableName := TblName;

SrcTbl.Open;

DBHandle := SrcTbl.DBHandle;

SrcTbl.Close;

ResultCode := DbiDeleteTable(DBHandle,

StrPCopy(Tbl,Dir +   '\' + TblName), nil );

if (ResultCode <> DBIERR_NONE) then

begin

DbiGetErrorString(ResultCode,Err);

raise EDatabaseError.Create( ' Удаляя ' +

Dir +   '\' + TblName + ', BDE ' +

'сгенерировал ошибку '''

+ StrPas(Err) + '''' );

end ;

finally

SrcTbl.Free;

end ;

end ;

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

Опрос

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

 

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

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

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