Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

не удаляются записи из базы [D6, dBase, FoxPro]


serjant ©   (2002-01-30 09:32:00) 

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


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

serjant (30.01.02 09:32)

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


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

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;



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

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

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


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

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


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

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


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

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


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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо