Добавление и удаление данных из таблицы dbf

Помогите осуществить добавление данных в таблицу dbf с помощью кнопки, и также кнопкой удалить данные(но только с предупреждением).
6 ответов

Из таблиц DBase/Foxpro записи просто так не удаляются... Они просто помечаются как удаленные, а для полного удаления необходимо было таблицу "упаковывать" (отдать команду PACK). В родной среде (FoxPro, например) это было нормально, но в программах на Дельфи отмеченные на удаление записи все равно были видны. И я не уверен, что средствами BDE/OLE это вообще можно сделать, т.к. Дельфи для работы с БД был изначально заточен на родной Борландовский Paradox, а не продукцию Microsoft. Гуглите прошловековые темы, все, что могу посоветовать, т.к. сейчас работа с этими форматами - отнюдь не актуальна...


В целом верно, но если послать команду Delete для таблицы, то запись удалится сразу.


Пытливый, не верно говорите. Команда delete только устанавливает отметку что запись помесена как удаленная. Чтобы удалить "удаленные" записи нужно вызвать команду pack. Для работы с dbf файлами использую компонент TDbf. С его помощью можно добавлять, редактировать и удалять записи в dbf файле.


Пытливый, хм... нет. Да, визуально так и происходит, но записи на самом деле никуда не деваются. Сейчас попробовал это проделать, потом скачал первый попавшийся DBF-View-ер (дожили, нечем DBF посмотреть) - и вот результат...Все бы ничего, удаленных записей не видно, вроде, но если попытаться определить количество записей в таблице - получим ерунду...


Действительно физически не удаляется, я воспользовался для проверки вьювером в тотале, а он поросенок не показывает удаленные Насчет количества записей - не согласен. У меня показывает четко количество без удаленных.
procedure TForm46.ADOTable1AfterScroll(DataSet: TDataSet);
begin
 Label1.Caption := IntToStr(ADOTable1.RecordCount)
end;
Вы чем подключаетесь к DBF? Я через ADO такой строкой:
ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=H:\Old\0\;Jet OLEDB:Engine Type=16';


Я пробовал через TTable с закладки BDE. Просто в свойстве TableName указывал полный путь к файлу DBF и Active выставлял в true.