![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не удаляются записи из базы [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 Переименовать копию, дав ей имя главного файла.