Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.05;
Скачать: CL | DM;

Вниз

Проблема с удалением строк в базе данных   Найти похожие ветки 

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

Программно удаляю строки из БД
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;
Все работает, но физически строки из таблицы не удаляются, сколько база занимала столько и занимает


 
sniknik ©   (2006-01-11 08:17) [1]

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


 
Johnmen ©   (2006-01-11 08:54) [2]

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


 
Johnmen ©   (2006-01-11 08:57) [3]

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


 
Desdechado ©   (2006-01-11 13:13) [4]

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


 
Anatoly Podgoretsky ©   (2006-01-11 14:05) [5]

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


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

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

Это мне?


 
Anatoly Podgoretsky ©   (2006-01-11 14:59) [7]

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


 
evvcom ©   (2006-01-11 16:21) [8]

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


 
0bsid ©   (2006-01-11 17:51) [9]

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


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

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


 
Desdechado ©   (2006-01-12 12:41) [11]

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


 
Johnmen ©   (2006-01-12 12:41) [12]

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


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


> Desdechado ©

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

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

> Johnmen ©  


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


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

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

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


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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2006.03.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.04 c
15-1139664410
Udaff
2006-02-11 16:26
2006.03.05
странное поведение стандартных диалогов


15-1139838715
aaa"'
2006-02-13 16:51
2006.03.05
SQL-injection test


15-1139761406
тихий вовочка
2006-02-12 19:23
2006.03.05
Ищу совет по поздравлению


2-1139933356
Yeg
2006-02-14 19:09
2006.03.05
БД для Интернета


3-1136959522
syte_ser78
2006-01-11 09:05
2006.03.05
Колво вхождений значений