Страница 1 из 1

Ошибка табличного параметра

Добавлено: Чт 21 апр 2016 14:38
ABazhin
Добрый день
Есть запрос вида

Код: Выделить всё

select * from table 
where 
id in (SELECT table_id FROM exp_1 WHERE po_id IN (SELECT id FROM :po_ids)) or 
id in (SELECT table_id FROM exp_2 WHERE po_id IN (SELECT id FROM :po_ids))
Заполняем табличный параметр

Код: Выделить всё

msquery1.ParamByName('po_ids').AsTable:= MSTableData1.Table;
Открываем запрос. Ошибка.
Аналогичное поведение при

Код: Выделить всё

select * from table 
where 
id in (SELECT table_id FROM exp_1 WHERE po_id IN (SELECT id FROM :po_ids1)) or 
id in (SELECT table_id FROM exp_2 WHERE po_id IN (SELECT id FROM :po_ids2))
Обоим параметрам присваиваем одну и туже MSTableData

Код: Выделить всё

msquery1.ParamByName('po_ids1').AsTable:= MSTableData1.Table;
msquery1.ParamByName('po_ids2').AsTable:= MSTableData1.Table;
Без ошибок отрабатывает только когда табличный параметр используется в запросе 1 раз и ему присвоена индивидуальная MSTableData. Т.е. для второго запроса

Код: Выделить всё

msquery1.ParamByName('po_ids1').AsTable:= MSTableData1.Table;
msquery1.ParamByName('po_ids2').AsTable:= MSTableData2.Table;
Это баг или так и задумано?

Re: Ошибка табличного параметра

Добавлено: Ср 27 апр 2016 09:15
AndreyZ
Мы воспроизвели описанное вами поведение и будем его исследовать. Мы сразу сообщим вам как только получим какие-либо результаты.