Форум: "Базы";
Поиск по всему сайту: 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.035 c
1-79402           Loxly                 2002-02-09 18:36  2002.02.25  
Как узнать ширину (width) строки, отображаемой в TMemo?


4-79500           NetBreaker666         2001-12-23 00:33  2002.02.25  
Multimedia timer


14-79456          StelZ                 2002-01-04 20:47  2002.02.25  
Help ака справка


3-79254           a1st                  2002-01-12 13:17  2002.02.25  
PDOXUSRS.LCK задолбал


7-79487           Georg                 2001-11-21 11:23  2002.02.25  
Декомпилятор