![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление из *.dbf [D7, dBase, FoxPro]
DancerMan © (2005-10-19 16:48:00)Для подключения к таблице использую ADOConnection.
DataSet - ADOQuery. Отображаю в DBGridEh. Имя базы basket.dbf
Проблема в следующем:
1. После выполнения этого кода
MainData.ADOInsDelBasket.SQL.Clear;
MainData.ADOInsDelBasket.SQL.Add('delete from basket');
MainData.ADOInsDelBasket.ExecSQL;
MainData.ADOQueryBasket.Open;
записи помечаются к удалению, но грид их все равно отображает.
2. А после выполнения этого
rec := MainData.ADOQueryBasket.RecNo;
try
MainData.ADOQueryBasket.Delete;
except
MainData.ADOQueryBasket.Cancel;
end;
MainData.ADOQueryBasket.Open;
MainData.ADOQueryBasket.MoveBy(rec-1);
текущая запись тоже помечается к удалению, из грида исчезает, но после повторного запуска программы - снова отображается в гриде.
Кто может подсказать в чем проблема?
Anatoly Podgoretsky (2005-10-20 12:23:00) [1]Это означает цепочку ODBC -> JET -> BDE
и на каждом пункте этой цепочки требуется правильная настройка и плюс работа будет зависить и различаться от того установлен ли БДЕ на машине
Ты по крайней мере устрани хотя бы первое звено, а лучше оба первых.
Кроме того разберись с форматом таблицы, возможно у тебя это Фокспро какой ни будь версии, тогда лучше перейти на OLEDB драйвер для ФоксПро.
DancerMan (2005-10-20 10:21:00) [2]
> ConnectingString?
Provider=MSDASQL.1;Persist Security Info=False;Data Source=Файлы dBASE;Mode=ReadWrite;Initial Catalog=D:\Katalog\tools\data
Anatoly Podgoretsky (2005-10-19 21:47:00) [3]ConnectingString?
sniknik (2005-10-19 21:19:00) [4]одну? нет такого, для одной это слишком накладно. если все удаленные очистить то смотря для какого провайдера
для VFP (вижуал фокс) это
PACK TABLE TableName
у других нет такой команды, делается обычно копированием данных в новую пустую таблицу, удалением оригинала и переименованием новой в старое название.
DancerMan (2005-10-19 18:50:00) [5]
> sniknik © (19.10.05 18:26) [3]
> возможно тип подключения через ODBC и в DSN (либо непосредственно
> в строке подключения) параметр deleted включен.
Точно! В источниках данных "Показ удаленных строк" стоял. Спасибо!
А как физически удалить запись?
sniknik (2005-10-19 18:26:00) [6]возможно тип подключения через ODBC и в DSN (либо непосредственно в строке подключения) параметр deleted включен.
DancerMan (2005-10-19 17:10:00) [7]
> MainData.ADOQueryBasket перед открытием закрывался?
Поставил закрытие.
Получается, что удаление помечает запись, как удаленную, но грид ее отображает.
А на MainData.ADOQueryBasket.Post; выдает, что DaraSet не в режиме вставки или редактирования.
Os (2005-10-19 16:59:00) [8]1. MainData.ADOQueryBasket перед открытием закрывался?
2.
> try
> MainData.ADOQueryBasket.Delete;
MainData.ADOQueryBasket.Post; // может так?
> except