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

Тема в разделе "Delphi - Базы данных", создана пользователем pups, 15 ноя 2006.

Статус темы:
Закрыта.
  1. pups

    pups Гость

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

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

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

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

    Barmutik Гость

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

    DZX Гость

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

    LAW Гость

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

    Mistey Гость

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

    LAW Гость

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

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

Поделиться этой страницей