Очень неприятная особенность Лазаря, при смене SQL запроса в активном TSQLQuery вываливается ошибка. Очень глупая ошибка, так как текст SQL нужно менять всегда. Как это гадость обойти не закрывая каждый раз набор данных, у меня очень много мест где это происходит и добавлять на каждое изменение запроса, закрытие query не реально. Вопрос напрямую перекликается с этим
http://www.freepascal.ru/forum/viewtopic.php?f=23&t=8133