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

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

Как не убрать помеченые на удаление записи ? [D6, dBase, FoxPro]


SergeyI ©   (2003-07-10 09:53:00) 

Уважаемые ALL подскажите, работаю с таблицами формата дбф через ADO, после выполнения операций delete в таблице записи остаются. Как
их убрать совсем ?


SergeyI   (2003-07-10 12:40:00) [1]

то sniknik Спасибо


SergeyI   (2003-07-10 12:34:00) [2]

то sniknik те в commandtext загоняешь строку PACK TABLE Xxxxxx1
и всё ?


sniknik   (2003-07-10 11:11:00) [3]

не там искал. у Jet нет такой команды, во всяком случае в SQL, в драйвере то есть
исам дбейса
используемая dll D:\WINNT\System32\msxbde40.dll
экспортируемые процедуры ..... DbiRegenIndex DbiPackTableDbiEmptyTable ......
но вот как к ним доступится... попроще? если выясниш свисти :о)).

для себя нашол гораздо более простой выход, т.к. нет постоянных упаковок после каждого удаления, а только по требованию, пункт типа "рапайр & реиндекс" то делаю так
подключаю драйвер Visual FoxPro
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DRIVER={Microsoft Visual FoxPro Driver};UID=;SourceDB=d:\;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=RUSSIAN;Null=Yes;Deleted=Yes;"
и делаю команду
PACK TABLE Xxxxxx1
для каждой таблици, не знаю будут ли проблемы с индексами (вроде должны) но мне без разницы "реиндекс" делается удалением и пересозданием индеков.
(удаляя индексный файл можно не озабачиватся 28-м байтом(признак индекса) драйвер FoxPro снимает его автоматически при отсутствии индексного файла. естественно для упаковки требуется монопольный доступ(общепринято), т.е. нужно закрыть таблицу везде перед операцией PACK)


Соловьев   (2003-07-10 10:52:00) [4]


> не нашёл я команду, может плохо искал

с ADO не работаю, не знаю как там пакуют... что-то слышал про pack table, но не уверен.


SergeyI   (2003-07-10 10:25:00) [5]

а если паковать то как ? (не нашёл я команду, может плохо искал)


Соловьев   (2003-07-10 10:12:00) [6]

Или паковать.


Соловьев   (2003-07-10 10:11:00) [7]

Deleted Двоичный индикатор, определяющий обработку ядром Microsoft Jet записей, отмеченных как удаленные. Значение 01 соответствует команде dBASE SET DELETED ON и отключает загрузку или позиционирование удаленных записей. Значение 00 соответствует команде dBASE SET DELETED OFF и указывает, что удаленные записи обрабатываются так же, как все остальные. По умолчанию задается значение 00. Значения имеют тип Binary в Windows 95 и Windows NT 4.0 или тип REG_BINARY в Windows NT 3.51


Наверх

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