основания . Искусство и наука стратегии лидерства
Автор: delphi | 14.12.2007 | 9:21 | В рубриках: Базы данных

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Упаковка таблиц Paradox & dBase

Процедура упаковки таблиц Paradox & dBase.
В процедуру передается TTable c любым состоянием свойства Active.
Состояние Active после выполнения процедуры остается предыдущим.
Процедура предусматривает отключение всех визуальных DbControls,
с последующим их подключением.

Зависимости: Bde, Db, DbTables
Автор: Александр, dbwork@kor.kes.ru, Кореновск
Copyright: Из исходного кода Database Workshop 4.12 (c)2002 Degisy Software
Дата: 23 мая 2002 г.
***************************************************** }

procedure Bde_PackTable(DataSet: TDataSet);
var
hDb: hDBIDb;
Tbl: TTable;
Props: CURProps;
CrDesc: CRTblDesc;
Save: Boolean;
begin
if (DataSet is TTable) then
begin
Tbl := TTable(DataSet);
Save := Tbl.Active;
Tbl.Active := True;
try
Check(DbiGetCursorProps(Tbl.Handle, Props));
if (Props.szTableType = szPARADOX) then
begin
FillChar(CrDesc, SizeOf(CRTblDesc), 0);
StrCopy(CrDesc.szTblName, Props.szName);
StrCopy(CrDesc.szTblType, Props.szTableType);
CrDesc.bPack := True;
Check(DbiGetObjFromObj(hDBIObj(Tbl.Handle), objDATABASE, hDBIObj(hDb)));
Tbl.DisableControls;
Tbl.Active := False;
Check(DbiDoRestructure(hDb, 1, @CrDesc, nil, nil, nil, False));
end
else if (Props.szTableType = szDBASE) then
begin
Tbl.Active := True;
Check(DbiPackTable(Tbl.DBHandle, Tbl.Handle, nil, szDBASE, True));
end;
finally
Tbl.Active := Save;
Tbl.EnableControls;
end;
end;
end;
Пример использования:

Bde_PackTable(Table1);

Эта запись была опубликована 14.12.2007в 21:12. В рубриках: Базы данных. Вы можете следить за ответами к этой записи через RSS 2.0. Комментарии пока закрыты, но Вы можете оставить трекбек со своего сайта.