Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];




Вниз

не удаляются записи из базы 


serjant   (2002-01-30 09:32) [0]

У меня есть база(DBase) в которую в процессе работы программы добавляются и удаляются записи,короче в конце работы программы база очищается.Но если посмотреть в файл,то там эти записи остаются,плиз помогите мне ЭТО побороть.Спасибо ВСЕМ.



Johnny Smith   (2002-01-30 10:08) [1]

Дело в том, что DBase&FoxPro не удаляют записи физически, а только помечают их как удаленные. В древних dBase-языках для этого существовала специальная команда "pack".
Бороться с эти можно:
1 Создать пустой *.dbf-файл с аналогичной структурой и другим именем.
2 При необходимости копировать его.
3 Перезаписывать в копию неудаленные записи из главного файла.
4 Удалить главный файл.
5 Переименовать копию, дав ей имя главного файла.



serjant   (2002-01-30 11:17) [2]

To Johnny Smith->Спасибо, и еще вопрос:может стоит перейти с DBase на другую базу, чем они вообще различаются(у кого какая скорость доступа и т.д)?



Johnny Smith   (2002-01-30 11:32) [3]

Ну, вообще говоря, все локальные базы - не фонтан. И по скорости, и в плане удаления строк (вообще, удалить участок из файла - задачка нетривиальная, она кстати, обсуждалась на форуме вчера или позавчера). С локалками можно работать только если база предполагается небольшого размера.
Так что если есть желание - перелезай на SQL - сервера (Interbase, MSSQL, Oracle). Уж там-то производительность - дай Боже, а возможностей... как собак :-))



serjant   (2002-01-30 12:26) [4]

To Johnny Smith->Понятно, а если у меня в базе около 1000 записей будет(ну ммакс 2-3тыс) то с ними через TTable нормально работать будет(в частности Table.Locate(....) для приблизительного ручного поиска будет нормально работать?).Спасибо.



Johnny Smith   (2002-01-30 12:56) [5]

Да, такой размер вполне по плечу DBF



Alex Y   (2002-01-30 13:14) [6]

Используй Access, рекомендую. У него возможностей по более будет, чем у dbf, да и таблицы там создавать легко.

Да, и производительность у него почти в два раза выше.



DeNNiss   (2002-01-30 15:57) [7]

uses BDE;

Так можно очистить DBF таблицу, физически удалив все записи

Table1.Close;
Table1.Exclusive:= true;
Table1.Open;

Check(DBIPackTable(Table1.DBHandle, Table1.Handle, nil, nil, true));

Table1.Close;
Table1.Exclusive := false;
Table1.Active:=true;




Anatoly Podgoretsky   (2002-01-31 00:18) [8]

serjant (30.01.02 09:32)

А ты не смотри, что за странно любопытство.
Мешают, упакуй.
И "короче в конце работы программы база очищается", а то у тебя какая то странная очистка получается.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.026 c
1-79338           ЕвгенийА              2002-02-08 01:20  2002.02.25  
Вопрос по формам...


1-79329           Yaro                  2002-02-08 01:36  2002.02.25  
Скрыть/Закрыть Explorer


1-79365           DimaIv                2002-02-08 16:38  2002.02.25  
Как правильно обьявлять функции при помощи Overload


14-79467          Kozhanov              2002-01-10 12:18  2002.02.25  
Создание интерпретаторов


1-79388           Lamery                2002-02-08 14:46  2002.02.25  
Паскаль