удалить записи в таблице Dbf.

  • Автор темы pups
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

pups

Подскажите пожалуйста,

есть таблица в DBF файле. Нужно её очистить от записей.
пишу

Table1.First;
while not Table1.Eof do
begin
Table1.Delete;
end;

Но после этого в DBF происходит не удаление записей а лишь пометка на удаление.
Подскажите как либо сжать, либо другой вариант очистки.
 
B

Barmutik

После логического удаления необюходимо произвести сжатие БД. И в процесс сжатия из базы будут физически удалены помеченные к удалению записи...
 
D

DZX

Самый простой способ переписать не помеченные записи в новую таблицу, а старую убить.
 
L

LAW

У движка BDE, на сколько я помню, нет функций сжатия. так что способ:
Самый простой способ переписать не помеченные записи в новую таблицу, а старую убить.

Действительно самый простой, но если вы используете сторониие компоненты для работы с DBF, то вполне возможно, что у них есть команды PAK (сжатие) или ZAP (очистка). Например так:
Код:
Form1->AdsTable1->PackTable();
 
M

Mistey

Так а если мне надо одну запись удалить? У меня база из пары десятков таблиц. И в каждой по несколько тысяч записей. Так если буду каждый раз таблицу перезаписывать, у меня все сотрудники помрут от старости с их-то маломощными рабочими компами! :)
 
L

LAW

А причём тут пользователи? У Вас база на сервере? Или каждый юзверь свою базу правит?

Если не устраивает подход с пересозданием, ставьте в проект сторонний компонент: Apollo, Halcyon, Advantage итд.
И делайте им Pack. А там может и совсем от BDE откажитесь.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!