![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Pack [D5, Paradox]
roman001 © (2002-02-28 18:58:00)Подскажите пожалуйста как програмно паковать парадоксовые таблицы, а то они пухнит на глазах
roman001 (2002-03-03 19:20:00) [1]Спасибо, буду пробовать
deleon (2002-03-01 09:02:00) [2]Еще одна библиотека компонент для работы с BDE и таблицами:
http://www.dbwork.kuban.ru/download/degisydb.zip
SDS (2002-02-28 23:09:00) [3]Вот код, одна процедура пакует одну таблицу, вторая все таблицу по имени алияса
Одна таблица
procedure PackParadoxTable(const ADatabaseName : string; const ATableName : string);
var
TblDesc : CRTblDesc;
TempDBHandle : HDBIDb;
begin
FillChar(TblDesc, sizeof(TblDesc), 0);
with TblDesc do begin
StrPCopy(szTblName, ATableName);
StrCopy(szTblType, szPARADOX);
bPack := true;
end;
try
Check(dbiOpenDatabase(PChar(ADatabaseName), Nil, dbiREADWRITE, dbiOpenExcl, Nil, 0, Nil, Nil, TempDBHandle));
try
Check(dbiDoRestructure(TempDBHandle, 1, @TblDesc, Nil, Nil, Nil, false));
finally
dbiCloseDatabase(TempDBHandle);
end;
except
end;
end;
Все таблицы
procedure PackAllParadoxTables(const ADatabaseName : string);
var
List : TStrings;
i : integer;
NewSession : TSession;
begin
NewSession := TSession.Create(nil);
List := TStringList.Create;
try
NewSession.SessionName := "NewSession";
NewSession.KeepConnections:= False;
NewSession.Open;
NewSession.GetTableNames(ADatabaseName, "*.db",False, False, List);
for i := 0 to List.Count - 1 do
PackParadoxTable(ADatabaseName, List[i]);
finally
List.Free;
NewSession.Free;
end;
end;
kirill2000 (2002-02-28 20:25:00) [4]Необходимо скачать библиотеку по адресу http://alvg.far.ru/files/rxd6.exeустановить ее, а затем включить модуль BDEUtils.pas в свой проект (в Uses). Тогда будет доступен метод PackTable(TTable)