Форум: "Базы";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];
ВнизDelete в SQLQuery не работает Найти похожие ветки
← →
GL00m (2007-07-02 12:56) [0]Есть поток, в котором выполняется SQLQuery1.Open с запросом типа
SELECT dfield1,dfield2,dfield3 FROM d_table
(БД MySQL). После этого выполняется Synchronize(SomeFunc). В функции SomeFunc делаю следующее:
SQLQuery1.First;
while not SQLQuery1.Eof do
begin
...
if SomeVar > 0 then
SQLQuery1.Delete
else
SQLQuery1.Next;
end;
И при этом получаю вечный цикл, когда SomeVar > 0. Никаких ошибок. Сначала думал, что в Query нельзя удалять записи. По хелпу оказалось, что можно. Delete по хелпу вроде бы должен удалять запись и переходить на следующую, а не происходит такого. В чем облажался?
← →
Desdechado © (2007-07-02 13:09) [1]A без потоков получается?
← →
Anatoly Podgoretsky © (2007-07-02 13:14) [2]> GL00m (02.07.2007 12:56:00) [0]
Возможно в ...
← →
Сергей М. © (2007-07-02 13:21) [3]Мне непонятна вот эта блажь - открывать НД в одном потоке, чтобы работать с ним в другом ..
Более того, вряд ли MySQL допустит такую вольность
← →
Johnmen © (2007-07-02 13:29) [4]
> GL00m (02.07.07 12:56)
Всё это враки изначально, ибо TSQLQuery не только однонаправленный, но и редактированию не подлежит.
О чём, кстати, и написано в упомянутом хелпе.
← →
GL00m (2007-07-02 13:46) [5]Без потоков не получается - долгая история, но нет.
В ... вряд ли, там ничего относящегося к этому квери нету.
Блажь-не блажь, но мне так удобнее работать.
> Всё это враки изначально, ибо TSQLQuery не только однонаправленный,
> но и редактированию не подлежит.О чём, кстати, и написано
> в упомянутом хелпе.
Спасибо, действительно, просто как обычно не дочитав описания компонента в хелпе тупо ткнул в Methods и получил в списке методов именно для TSQLQuery Methods метод Delete. Хотя на странице с описанием TSQLQuery: There is no built-in editing support.
← →
Desdechado © (2007-07-02 14:00) [6]Johnmen © (02.07.07 13:29) [4]
Точно. Этого зверя не использую, обычно юзаю SQLDataset, вот и забыл...
> Без потоков не получается - долгая история, но нет.
Вообще-то я имел в виду не концепцию программы без потоков, а просто попробовать удалять не в потоке, для эксперимента.
← →
GL00m (2007-07-02 14:28) [7]
> Вообще-то я имел в виду не концепцию программы без потоков,
> а просто попробовать удалять не в потоке, для эксперимента.
ааа... ну поздно уже, теперь понятно куда копать =)
← →
GL00m (2007-07-02 15:07) [8]Спасибо! Все решилось путем добавления на форму DataSetProvider"а и ClientDataSet"а. Дальше в SomeFunc использую вместо SQLQuery1 ClientDataSet1.
Еще раз спасибо!
← →
Desdechado © (2007-07-02 15:19) [9]А мне не понятно, зачем тащить всю таблицу на клиента, да еще и в кэширующий датасет отправлять, чтоб потом по какому-то условию убрать записи. Не проще ли условие сразу вставить во WHERE-секцию SELECT"а для отбора нужных или DELETE"а для удаления ненужных?
← →
GL00m (2007-07-02 15:53) [10]
> вставить во WHERE-секцию SELECT"а для отбора нужных
У нас по какой-то причине админ поставил такой mySQL, на котором, по непонятной мне причине не работают вложенные запросы. Он на все вопросы говорит, чтобы все делали как можно проще без всякой вложенности и навороченности запросов. Пол-года назад я в это уже уперся, с тех пор даже не пытаюсь туда соваться.
На самом деле там тащится не вся таблица, а небольшая часть, не больше 80 записей, а делается все это ради "недобавления" повторяющихся записей.
Алгоритм программы туп: из БД mysql берется часть данных за последние сутки с допуском несколько минут, их надо добавить в архивную БД аксесс (не моя идея!!!), из них удаляются те, которые уже присутствуют в аксессе и остатки пихаются в аксесс. По не зависящим от меня причинам ни там, ни там нет уникальных полей, поэтому приходится крутиться как умею. =(
← →
Desdechado © (2007-07-02 16:01) [11]Причем тут вложенность запросов?
PS а в той пузырящейся жидкости, которую ты описал, островки здравомыслия есть?
← →
GL00m (2007-07-02 16:03) [12]Вложенность запросов примерно вот здесь:
> Не проще ли условие сразу вставить во WHERE-секцию SELECT"а
> для отбора нужных или DELETE"а для удаления ненужных
применительно к моему случаю.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c