Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > FireDAC упаковать DBF файл


Автор: GraNit 11.6.2020, 07:37
Приветствую всех!

Давно не программировал базы. Моя последняя запись здесь с 2012 года. Видать "много воды утекло" с той поры.
Суть проблемы: поставил RAD Studio 10.4. Поставил ADS, прикрутил к RAD. Получаю доступ к dbf файлу, т.е. просмотр без проблем. Необходимо удалить все записи в файле. Прометка на удаление проходит "на ура!", а вот физическое удаление никак. Как работает этот FireDAC? Может я что-то упускаю? Путь к файлу получаю параметром через командную строку. На форме лежат FDConnection и FDTable. В FDConnection и FDTable параметр UpdateOptions все флажки ReadOnly сняты. 
 Ниже код:
Код

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    // Получим строку с DBF файлом
    myDBFFile = ParamStr(1);

    myFile = ExtractFileName(myDBFFile);
    myPath = ExtractFileDir(myDBFFile)+UnicodeString("\\");

    // передадим нужные параметры в Conection и Table1
    newDatabase= "Database="+myPath;
    FDConnection1->Params->Add("ServerTypes=Local");
    FDConnection1->Params->Add(newDatabase);
    FDConnection1->Params->Add("TableType=VFP");
    FDTable1->TableName=ChangeFileExt(myFile,"");
    FDTable1->Exclusive = True;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormActivate(TObject *Sender)
{
// и подключимся к базе
    FDConnection1->Connected = True;
    FDTable1->Active = True;

// очистим таблицу

    FDTable1->First();
    while (FDTable1->RecNo<FDTable1->RecordCount-1){
         FDTable1->Delete();
         FDTable1->Edit();
         FDTable1->Post();
    }
    FDTable1->Refresh();
}

В базе все записи промечены на удаление, но не удалены физически. 
Что не так?
Благодарствую за помощь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)