Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как в базах DBF логически удаленные записи удалить физически.

1.3K
11 октября 2001 года
DrilLer
5 / / 20.08.2000
Посоветовали делать так
Table1->Close();
Table1->Exclusive=true;
Table1->Open();
DbiPackTable(Table1->DBHandle,Table1->Handle, NULL,NULL,true);

но как дело подходит к етой строчке Table1->Open(); выскакивает сообщение что таблица занята
Так вот вопрос как мне её освободить ?

371
25 октября 2001 года
Non_prog
193 / / 20.03.2000
Перед RUN-ом Project-та
поставь Table1->Active в false

А в фун-ию FormCreate()
{
Table1->Open();
}

Далее
Table1->Close();
Table1->Exclusive=true;
DbiPackTable(Table1->DBHandle,Table1->Handle, NULL,NULL,true);
Table1->Open();
Но физического del-a нет (размер dbf-фа не меняется)

Аноним
Можно упаковать таблицу так
ЗЫ только надо, чтобы к базе был доступ через драйвер BDE STANDART, а тип был DBASE.

// упаковка таблицы
DBIResult __fastcall PackLog(AnsiString asDatabase, AnsiString asTable)
{
DBIResult dbiResult;
CURProps CurProps;
hDBIDb hdbiDb;
hDBICur hCursor;
char cError[255];

// открыть БД
dbiResult = DbiOpenDatabase(asDatabase.c_str(), NULL,
dbiREADWRITE, dbiOPENSHARED,
NULL, 0, NULL, NULL, hdbiDb);
dbiResult = DbiGetErrorString (dbiResult, cError);
if (dbiResult != DBIERR_NONE) return dbiResult;
// открыть таблицу
dbiResult = DbiOpenTable(hdbiDb, asTable.c_str(), NULL,
NULL, NULL, 0, dbiREADWRITE,
dbiOPENEXCL, xltFIELD, TRUE,
NULL, hCursor);
dbiResult = DbiGetErrorString (dbiResult, cError);
if (dbiResult != DBIERR_NONE) goto CleanUp;

dbiResult = DbiGetCursorProps(hCursor, CurProps);
if (dbiResult != DBIERR_NONE) goto CleanUp;
strcpy(cError, CurProps.szTableType);
if(strcmp(CurProps.szTableType, szDBASE) == 0)
// {
// Get the database handle from the cursor handle

dbiResult = DbiPackTable(hdbiDb, hCursor, NULL, NULL, false);
dbiResult = DbiGetErrorString (dbiResult, cError);
// }
CleanUp
dbiResult = DbiCloseCursor(hCursor);
dbiResult = DbiCloseDatabase(hdbiDb);
return dbiResult;
}

//---------------------------------------------------------------------------
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог