03.06.2004, 14:09 | #1 |
Участник
|
Подмена запроса формы запросом из АОТа
в датасорсе формы перекрыт метод
public void init() { super(); this.query(new Query(queryStr(TEST))); } запрос TEST достаточно сложный, 18 разных таблиц, на некоторых из них установлены Range. public void executeQuery() { int i,j; QueryBuildDataSource qbds; ; if(this.query()) { for (i=1;i<=this.query().dataSourceCount();i++) { qbds=this.query().dataSourceNo(i); info(int2str(i)+')'+qbds.name()); for (j=1;j<=qbds.rangeCount();j++) { info(' '+int2str(j)+' - '+qbds.range(j).name()+' - '+qbds.range(j).value()); } } } super(); } в этом месте видно, что запрос формы реально изменен, все фильтры на месте. Но на форме все равно все записи. Трассировка SQL показывает, что на скуль уходит запрос select * from [ПерваяТаблицаЗапроса]. Это так и должно быть, или я забыл еще что-нибудь? |
|
03.06.2004, 14:30 | #2 |
----------------
|
Я всегда сомневался в способности Аксапты обработать запрос с кол-вом таблиц > 5 и различными видами JOIN (у Вас же не все inner ?)
Попробуйте подставить запрос попроще, использовать display-методы. -------------------------------- Или выполните запрос с помощью Statement, результат сложите в темповую таблицку, а уже её вывести в форму. |
|
03.06.2004, 14:44 | #3 |
Юзовские
|
Методом тыка было установлено, что в таких случаях нужно менять свойство FetchMode на датасорсах. Как именно определяется в каждом конкретном случае.
И здесь я согласен c Wamr на счет сложных запросов. |
|