Форум: "Базы";
Текущий архив: 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)
А ты не смотри, что за странно любопытство.
Мешают, упакуй.
И "короче в конце работы программы база очищается", а то у тебя какая то странная очистка получается.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.004 c