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

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

Глюк в параметризированном запросе [D7, Paradox]


Глюкоман ©   (2005-08-01 00:08:00) 

В программе выполняется кусок кода:
query1.close;
query1.prepere;
query1.params[0].asinteger:=x;
query1.execsql;
query1.active:=true;

текст запроса:
select name from main.db where idst=:set1
запрос выполняется правильно, но после нескольких выполнений кода выдается ошибка "Some internal limit"


Соловьев   (2005-08-03 10:08:00) [1]


> p.s. prepere и execsql всетаки лишние.

execsql лишний


Глюкоман   (2005-08-03 00:27:00) [2]

>Anatoly Podgoretsky
Скорей всего что-то в BDE и возможно требуется использовать другие функции BDE для сброса кэша (close & free не помогают) как это сделать я не знаю.


erika   (2005-08-02 08:58:00) [3]

Попробуй проще

query1.close;
query1.params[0].asinteger:=x;
query1.open();

работает без отказно


Anatoly Podgoretsky   (2005-08-02 00:12:00) [4]

Возсожно, это close или free


Глюкоман   (2005-08-02 00:05:00) [5]

А возможно ли физически удалять результаты предыдущего запроса перед выполнением нового запроса?


Desdechado   (2005-08-01 12:55:00) [6]

Prepare выполняется неявно для неподготовленных запросов.
А если готовить явно, то Prepare надо вызывать 1 раз в самом начале, а не при каждом запросе, у которого меняется только параметр.


sniknik   (2005-08-01 02:00:00) [7]

> другие варианты подскажите пожалуйста.

> "Some internal limit"
было обсуждение там такая ошибка выдавалась, только при заполнении таблицы а не запросе... когда размер ее превышал лимит.

но допустим, ошибка выдается. именно как описано... почему может быть? если например, оригинальная таблица сделана с максимальным "блоксайз"-ом, и значит может иметь до 2гб размера (или около того). а после выставлен другой параметр минимальный, и размер соответственно может быть только 128мб...
когда выполняется запрос он формирует временную таблицу. с какими параметрами? скорее всего с текущими. так? а запрос, возможно, возвращает больше... ибо может! оригинальная таблица в несколько раз больше. вот ограничение на размер и наступило, у временной таблици "internal limit" размера.
или показан (как обычно ;) не оригинальный запрос, а в оригинальном есть обьеденение... тогда исходным таблицам даже не нужно быть "особенными"/большими, обьеденение может быть очень большим.
ну вот. один из варитов. проверь, выставь максимальный BLOCK SIZE  у парадокса.

(хотя Some это не обязательно размер ;о)), может чтото другое кончилось)

p.s. prepere и execsql всетаки лишние.


Глюкоман   (2005-08-01 00:59:00) [8]

Ну если есть другие варианты подскажите пожалуйста.


Глюкоман   (2005-08-01 00:48:00) [9]

Да я и сам офигел от єтой ошибки.
Запрос выполняется с разными значениями параметра, определенными пользователем, поэтому и приходится делать prepere. Насчет execsql - по другому не возвращаются верные результаты.


DrPass   (2005-08-01 00:39:00) [10]

Это парадокс. Но зачем делать много раз query1.prepare? И зачем вообще делать query1.execsql, если это запрос на выборку?


Наверх

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