Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.08.22;
Скачать: [xml.tar.bz2];

Вниз

Работа с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.006 c
1-71151
Torn
2002-08-08 23:45
2002.08.22
Бегущая строка


14-71356
Sam Stone
2002-07-27 21:02
2002.08.22
CreateProcess


1-71201
Schummi
2002-08-03 07:57
2002.08.22
Help, please!!!


14-71304
Igorek
2002-07-26 09:53
2002.08.22
А не написал ли кто-нибуть уже Mail-Browser?


3-71017
RangerBetta
2002-07-31 08:17
2002.08.22
Подскажите SQL WHere





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский