Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
Святослав ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.012 c
2-1140073355
nap<>
2006-02-16 10:02
2006.03.05
Как получить поле


11-1103380040
GDred
2004-12-18 17:27
2006.03.05
Где можно взять KOLSQLite


6-1132586947
Дмитрий_05
2005-11-21 18:29
2006.03.05
Что лучше использовать? TcpClient(ClientSocket) TcpServer(...)


3-1134547301
Alex_1234
2005-12-14 11:01
2006.03.05
TADOQuery, тип поля DATE, параметр ????


15-1139571443
Cerberus
2006-02-10 14:37
2006.03.05
DVD в .Avi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский