Здравствуйте, Sergunja, Вы писали:
S>Использую ADOTable Делаю, S>AdoEditTable.Active := true; S>AdoEditTable.DeleteRecords(arAll); // Выдает "Операция недопустима в S>данном контексте", почему?
S>Но, работает вариант: with AdoTable do While not Eof do Delete;
S>Однако медленно.. И тут же вопрос, Delete; — помечает записи на S>удаление, а как удалить помеченные записи насовсем? Искал метод не S>нашел
Здравствуйте, _Oleg_, Вы писали:
_O_>Здравствуйте, Sergunja, Вы писали:
S>>Использую ADOTable Делаю, S>>AdoEditTable.Active := true; S>>AdoEditTable.DeleteRecords(arAll); // Выдает "Операция недопустима в S>>данном контексте", почему?
S>>Но, работает вариант: with AdoTable do While not Eof do Delete;
S>>Однако медленно.. И тут же вопрос, Delete; — помечает записи на S>>удаление, а как удалить помеченные записи насовсем? Искал метод не S>>нашел
_O_>Вызови SQL на прямую: _O_>
_O_>truncate table "tablename";
_O_>
_O_>Удвлит без возможности отката.
За что "-" ?
Объясните пожалуйста.
Я понимаю, что необходимо использовать метод компонента DAO, но я предложил обходной способ.
Здравствуйте, _Oleg_, Вы писали:
_O_>>Вызови SQL на прямую: _O_>>
_O_>>truncate table "tablename";
_O_>>
SQLQuery.SQL.Add('truncate table "tablename";');
SQLQuery.ExecSQL; // — Инструкция неподдерживается, Ожидается INSERT, DELETE, UPDATE или SELECT
Пробовал SQLQuery.SQL.Add('DELETE * from "tablename";'); // — Удаляет также только помечая на удаление :( Неужели нету стандартных методов у ADOTable или хотя бы на сикуэль, чтобы очистить базу от записей помеченных на удаление?! Вроде бы мелочь а вся работа встала.
p.s. Как вариант можно делать: DeleteFile('*.dbf'); и создавать структуры заного для всех, только помоги с созданием таблицы, пишет ошибка синтаксиса: SQLQuery.SQL.Add('create table "'+BDName+'" ("DATE" D, "TIME" C(8), "METRIC" F(9,2));'); Какой синтаксис для create table в случае DBF ?
Но всё таки лучше изначальный вариант, метод, очисщающий БД от записей помеченных на удаление, как например PACK в клиппере или фокспро!!
Здравствуйте, _Oleg_, Вы писали:
S>>>Использую ADOTable Делаю, S>>>AdoEditTable.Active := true; S>>>AdoEditTable.DeleteRecords(arAll); // Выдает "Операция недопустима в S>>>данном контексте", почему?
Читаю хелп по DeleteRecords:
If the dataset was opened in batch update mode, the records are only marked for deletion. Apply the batch deletions by calling the UpdateBatch method. If the dataset is not in batch update mode, the records are immediately removed from the base table.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
То что надо! Но, AdoEditTable.DeleteRecords(arAll); // Выдает "Операция недопустима в
данном контексте", почему?
А неподскажете как обращатся к функциям ODBC напрямую из программы? и где о них почитать?
использую: Microsoft OLE DB Provider for ODBC Driver
может там есть функция типо dbiPackTable, что нибудь, чтоб удалить помеченные для удаления записи навсегда
Здравствуйте, Sergunja, Вы писали:
S>А неподскажете как обращатся к функциям ODBC напрямую из программы? и где о них почитать? S>использую: Microsoft OLE DB Provider for ODBC Driver S>может там есть функция типо dbiPackTable, что нибудь, чтоб удалить помеченные для удаления записи навсегда
Я так понимаю что было бы хорошо вначале сообщить с чем мы работаем через АДО, т.к. можно работать хоть с Ораклом хоть с ДБФками и экселем и т.п.
В данном случаее видать это ДБФ???
Если это относительно ДБФ то так и должно всё быть. Записи помечаются, а потом если таблицу упаковать они удаляются навсегда...
Здравствуйте, Vodyamba, Вы писали:
V>Я так понимаю что было бы хорошо вначале сообщить с чем мы работаем через АДО, т.к. можно работать хоть с Ораклом хоть с ДБФками и экселем и т.п.
DBase (*.dbf), простые локальные однопользовательские ДБФ
V>Если это относительно ДБФ то так и должно всё быть. Записи помечаются, а потом если таблицу упаковать они удаляются навсегда...
Так и вопрос в том, как упаковать средствами доступными из дельфи?
Тут нашел в инете компонент TABSDataBase и у него подходящий метод CompactDatabase, только он работает с некой *.abs — базой (Absolute database), чет первый раз слышу, что за базы такие?
Здравствуйте, Sergunja, Вы писали:
S>Так и вопрос в том, как упаковать средствами доступными из дельфи?
S>Тут нашел в инете компонент TABSDataBase и у него подходящий метод CompactDatabase, только он работает с некой *.abs — базой (Absolute database), чет первый раз слышу, что за базы такие?
Думаю надо упаковывать средствами уж никак не Делфи...
Интересует именно АДО??? Может использовать БДЕ. Для ДБФ она идеально подходит и проблем вроде меньше... Для БДЕ могу подсказать... Надо?
Здравствуйте, Vodyamba, Вы писали:
V>Интересует именно АДО??? Может использовать БДЕ. Для ДБФ она идеально подходит и проблем вроде меньше... Для БДЕ могу подсказать... Надо?
нее, это умею, неохота БДЕ с сабой тоскать, решил проблему примерно пока так:
AdoQuery1.SQL.Add('select * from '+BDName+';');
AdoQuery1.Active:=True;
AdoTable1.Active:=True;
while not ADOQuery1.eof do
begin
AdoTable1.Insert;
AdoTable1.FieldValues['DATE']:=ADOQuery1.FieldByName('DATE').AsDateTime;
AdoTable1.FieldValues['TIME']:=ADOQuery1.FieldByName('TIME').AsString;
AdoTable1.FieldValues['METRIC']:=ADOQuery1.FieldByName('METRIC').AsFloat;
AdoTable1.Post;
ADOQuery1.Next;
end;
Правда медленно работает..
S>Так и вопрос в том, как упаковать средствами доступными из дельфи?
S>Тут нашел в инете компонент TABSDataBase и у него подходящий метод CompactDatabase, только он работает с некой *.abs — базой (Absolute database), чет первый раз слышу, что за базы такие?
Для работы с dbf из дельфей рекомендую TVKDbf. И есть такой метод Zap, который чистит всю таблицу сразу, без всяких пометок.
Здравствуйте, TMU, Вы писали:
S>>Так и вопрос в том, как упаковать средствами доступными из дельфи?
TMU>Для работы с dbf из дельфей рекомендую TVKDbf. И есть такой метод Zap, который чистит всю таблицу сразу, без всяких пометок.
Отлично! То что надо, однако нигде не могу найти, только гугл дал сайт "http://www.sunroad.net", который отображается некоректно.
А у Вас нету TVKDbf ? Если есть не могли бы вы выслать мне на мыло dbig [собака] rambler.ru
S>Отлично! То что надо, однако нигде не могу найти, только гугл дал сайт "http://www.sunroad.net", который отображается некоректно. S>А у Вас нету TVKDbf ? Если есть не могли бы вы выслать мне на мыло dbig [собака] rambler.ru