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

Вниз

Работа с DBF, TTable   Найти похожие ветки 

 
megadeth   (2002-07-30 12:33) [0]

Каким образом удалить помеченые на удаление поля?


 
Jee ©   (2002-07-30 12:39) [1]

Команда BDE есть специальная, какая точно не помню, но искать надо там.


 
Tornado ©   (2002-07-30 12:40) [2]

"Упаковка" (физическое удаление помеченных к удалению записей) таблицы Базы Данных (проверялось только на файлах DBF)
Нужно подключить модули :
DBTables, DB, dbiProcs,DbiErrs,dbiTypes;
Здесь, если NrErr>0 , то вывод на экран сообщения об ошибке (если была ошибка).
если NrReInd>0 , то автоматический вызов функции TableRegenIndexes (см.ниже) сразу после "упаковки".


function TablePack(NrErr,NrReInd : byte;Tbl : TTable) : Boolean;
Var
YesEx,YesAct : byte;
S : String;
Res,Res1 : DBIResult;
CCC,TableName : array[0..255] of Char;
begin
Result:=FALSE;
YesEx:=0;
if Tbl.Exclusive then YesEx:=1;
YesAct:=0;
if Tbl.Active then YesAct:=1;
Tbl.Active:=FALSE;
Tbl.Exclusive:=TRUE;
Tbl.Active:=TRUE;
StrPCopy(TableName,Tbl.TableName);
Res:=DbiPackTable (Tbl.DBHandle,
Tbl.Handle,
TableName,
NIL{szDBASE},
TRUE);
Tbl.Active:=FALSE;
if YesEx<=0 then Tbl.Exclusive := FALSE;
if YesAct>0 then Tbl.Active:=TRUE;

if Res=0 then begin
Result:=TRUE;
if NrReInd>0 then begin
if not TableRegenIndexes(NrErr,Tbl) then Result:=FALSE;
end;
end
else begin
if NrErr>0 then begin
Res1:=DbiGetErrorString (Res,CCC);
Str(Res,S);
S:="Ошибка упаковки : "+S+" -> "+StrPAS(CCC)+" для : "+Tbl.TableName;
MessageBeep(mb_IconHand);
MessageDlg(S,mtError,[mbOk],0);
end;
end;
end;


Регенерация индексов таблицы Базы Данных (проверялось только на файлах DBF)


function TableRegenIndexes(NrErr : byte;Tbl : TTable) : Boolean;
Var
YesEx,YesAct : byte;
S : String;
Res,Res1 : DBIResult;
CCC : array[0..255] of Char;
begin
YesEx:=0;
if Tbl.Exclusive then YesEx:=1;
YesAct:=0;
if Tbl.Active then YesAct:=1;
Tbl.Active:=FALSE;
Tbl.Exclusive:=TRUE;
Tbl.Active:=TRUE;
Res:=DbiRegenIndexes (Tbl.Handle);
Tbl.Active:=FALSE;
if YesEx<=0 then Tbl.Exclusive := FALSE;
if YesAct>0 then Tbl.Active:=TRUE;

if Res=0 then begin
Result:=TRUE;
end
else begin
if NrErr>0 then begin
Res1:=DbiGetErrorString (Res,CCC);
Str(Res,S);
S:="Ошибка реген.индекс.: "+S+" -> "+StrPAS(CCC)+" для : "+Tbl.TableName;
MessageBeep(mb_IconHand);
MessageDlg(S,mtError,[mbOk],0);
end;
end;
end;


 
Anatoly Podgoretsky ©   (2002-07-30 12:40) [3]

Они уже удалены, теперь можно только упаковать таблицу, dbiPackTable


 
ValWhite   (2002-08-04 15:32) [4]

To megadeth
О чем все-таки речь - удалить поля или записи ? :))



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

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

Наверх




Память: 0.47 MB
Время: 0.026 c
14-71348
bu-hast
2002-07-26 20:55
2002.08.22
пью двадцать первый день подряд


1-71136
dmtr
2002-08-13 11:10
2002.08.22
Коммандная строка


1-71078
Vitas2
2002-08-11 08:33
2002.08.22
TBitmap


3-70980
SaS13
2002-07-31 11:21
2002.08.22
Остановить выполнение запроса


1-71121
maxim2
2002-08-13 09:17
2002.08.22
Каким образом загрузить курсоры и картинки из res файла