Форум: "Базы";
Поиск по всему сайту: 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.013 c
3-79297           tatk                  2002-01-30 19:16  2002.02.25  
Результат запроса -> в переменную (массив)


3-79259           Delirium              2002-01-30 15:29  2002.02.25  
XMLQuery или XMLTable


3-79251           AndrewK               2002-01-30 14:26  2002.02.25  
Как заставить MS SQL Server 7.0 сообщать подсоединенным клиентам о необходимости обновить свои DataSet`ы


1-79358           dimich                2002-02-08 10:12  2002.02.25  
У меня огромный прикол!


14-79444          fliz                  2001-12-27 14:48  2002.02.25  
Эй, московские! может встретимся по поводу ..