Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с удалением строк в базе данных [D7, Paradox]


Святослав ©   (2006-01-11 01:06:00) 

Программно удаляю строки из БД
Query1:=TQuery.Create(nil);
Query1.DatabaseName:=Path;
Query1.SQL.Clear;
Query1.SQL.Add('delete from info where pole=znachenie');
Query1.ExecSQL;
Query1.ApplyUpdates;
Query1.Destroy;
Выскакивает ошибка «Dataset not in edit or insert», подскажите где искать и как с ней бороться???
Если сделать так
Query1:=TQuery.Create(nil);
Query1.DatabaseName:=Path;
Query1.SQL.Clear;
Query1.SQL.Add('delete from info where pole=znachenie');
Query1.ExecSQL;
//Query1.ApplyUpdates;
Query1.Destroy;
Все работает, но физически строки из таблицы не удаляются, сколько база занимала столько и занимает


Святослав   (2006-01-12 18:51:00) [1]

Спасибо всем!
Буду работать дальше...


evvcom   (2006-01-12 15:05:00) [2]


> Можно ли послать SQL-запрос который гарантировал бы изменения
> и на физическом уровне или за это отвечает исключительно
> СУБД?

За это отвечает исключительно СУБД! В твоем случае изменения происходят на физическом уровне. Разве после удаления записей ты их продолжаешь видеть? А в качестве СУБД выступает движок BDE.
А что касаемо размера, так это нормально. Посмотри в любом инструменте, Database Desktop например, там есть поле с галочкой Pack Table. Аналогично в BDE есть функция DbiPackTable.


Reindeer Moss Eater   (2006-01-12 14:44:00) [3]

Можно ли послать SQL-запрос который гарантировал бы изменения

Если бы таковой был, то его можно было бы послать.


Святослав   (2006-01-12 14:19:00) [4]


> Desdechado ©

> если внимательно почитать справку, то ApplyUpdates просто
> передает изменения в клиентском датасете на сервер, а у
> тебя никакого клиентского датасета нет, вот и матюк

Спасибо, помогло понять!!!

> Johnmen ©  


Еще вопрос:
Можно ли послать SQL-запрос который гарантировал бы изменения и на физическом уровне или за это отвечает исключительно СУБД?
База была на 500 000 позиций, удалил до 10 000, она как занимала 100м так и занимает, теперь если добавлю еще 500 000 то она начнет плодиться, рано или поздно сожрет всю память!
Что делать?


Desdechado   (2006-01-12 12:41:00) [5]

если ты явно не стартовал транзакцию, то и подтверждать ее явно не надо
если стартовал, то подтверждай
если внимательно почитать справку, то ApplyUpdates просто передает изменения в клиентском датасете на сервер, а у тебя никакого клиентского датасета нет, вот и матюк


Johnmen   (2006-01-12 12:41:00) [6]

Правильно не знаешь. Транзакии к Парадоксу отношения не имеют.
Здесь ещё читани
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988623315&n=14


Святослав   (2006-01-12 12:35:00) [7]

Все дело в транзакциях, чтоб изменения вступили в силу SQL – запрос надо подтвердить, что-то вроде COMMIT WORK! Но где и как им пользоваться не знаю! если кто знает как это сделать из DELPHI под BDE подскажите!!!
Query1.ApplyUpdates по идей должен завершить транзакцию, но выскакивает матюк


0bsid   (2006-01-11 17:51:00) [8]

ExecSQL и Free
размер базы запросто может и не меняться, но запись удалится


evvcom   (2006-01-11 16:21:00) [9]

Кстати-n (какое уж там по счету), вероятнее всего вообще ничего не удаляется.
Резюме - см. Anatoly Podgoretsky ©   (11.01.06 14:59) [7]


Anatoly Podgoretsky   (2006-01-11 14:59:00) [10]

Не тебе, а в общий поток.
А резюме стандартное - переписать все нафиг.


Johnmen   (2006-01-11 14:18:00) [11]

>Anatoly Podgoretsky ©   (11.01.06 14:05) [5]

Это мне?


Anatoly Podgoretsky   (2006-01-11 14:05:00) [12]

Кстати и возможные утечки тоже не из этой.


Desdechado   (2006-01-11 13:13:00) [13]

записи удаляются, поскольку тебе они недоступны
а проблемы физического хранения - не твоя забота, а движка БД


Johnmen   (2006-01-11 08:57:00) [14]

кстати-2, Destroy тоже не из этой...


Johnmen   (2006-01-11 08:54:00) [15]

кстати, Clear тоже не из этой...


sniknik   (2006-01-11 08:17:00) [16]

ApplyUpdates это вообще "не из той оперы", а размер... ищи в форуме про упаковку таблиц


Наверх

Титульная страница Поиск, карта сайта Написать письмо