Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.02;
Скачать: CL | DM;

Вниз

dbiDoRestructure   Найти похожие ветки 

 
td   (2003-05-13 19:48) [0]

Использую такую процедуру для упаковки таблицы

procedure PackTable(Table: TTable); //упаковка таблицы
var
TblDesc: CrTblDesc;
TempDBHandle: HDBIDb;
begin
FillChar(TblDesc, SizeOf(TblDesc),0);
with TblDesc do
begin
StrPCopy(szTblName, PChar(Table.TableName));
strPCopy(szTblType, szPARADOX);
bPack:=true;
end;
Check(dbiOpenDatabase(PChar(Table.DatabaseName),nil,dbiREADWRITE,
dbiOpenExcl,nil,0,nil,nil,TempDBHandle));

try
Check(dbiDoRestructure(TempDBHandle,1,@TblDesc,nil,nil,nil,false));
finally
dbiCloseDatabase(TempDBHandle);
end;
end;


И у меня выдается такая ошибка: Unknown database. Alias: "c:\1\".
Обязательно нужно созадавать такой алиас? Или что-то не так?


 
leonon ©   (2003-05-13 19:55) [1]

Table.DatabaseName = "c:\1\" ????? А база там есть?


 
td   (2003-05-13 20:13) [2]

ну да
когда я вызываю процедуру PackTable(Table1), то для table1 указано имя и databasename:="c:\1\".. Ну это просто путь, без алиаса.


 
degisy   (2003-05-14 08:46) [3]

Спрашивается, зачем тебе тут функция dbiOpenDatabase???
Ведь Table имеет DbHandle, который и так уже указывает на дескриптор базы данных! Вот тебе рабочая процедура:

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;



Страницы: 1 вся ветка

Текущий архив: 2003.06.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
14-3157
AFrolov
2003-05-13 13:07
2003.06.02
Численный поиск корней функции


14-3051
Денис
2003-05-14 00:42
2003.06.02
Помогите, пожалуйста. Очень надо!!! (диплом)


14-3064
lia
2003-05-16 08:39
2003.06.02
Пример реализации SMTP, POP клиента на паскале...


14-3143
Дремучий
2003-05-15 10:39
2003.06.02
Мастаки и приколы яндекса :))


7-3180
Гульшат
2003-03-17 18:34
2003.06.02
Загрузка программы