Главная страница
    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.007 c
1-71258
oguz
2002-08-12 10:12
2002.08.22
Как сделать ссылку на сайт(e-mail) в Delphi


1-71106
croupeir
2002-08-12 20:08
2002.08.22
как всавить код во вновь создаваемый объект


14-71352
~Rand~
2002-07-25 20:38
2002.08.22
Win XP - ограничение доступа на диск С:


1-71132
Lena
2002-08-13 00:28
2002.08.22
Чтение дока


3-70966
ppcat
2002-07-30 14:10
2002.08.22
Доступ к документам Excell с помощью ADO или ODBC





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский