24.07.2009, 10:55 | #1 |
Участник
|
Отчет по данным из нескольких компаний
Добрый день.
Ax 3.0 SP3, MS SQL 2005. Имеется отчет с запросом из двух сгруппированных таблиц, соединенных по NotExistsJoin. Чтобы обойти компании, перекрываю fetch отчета: X++: public boolean fetch() { boolean ret; ; while select departmentDataArea where departmentDataArea.Department == department { changeCompany(departmentDataArea.Id) { if(this.queryRun()) { this.queryRun.query().dataSourceTable(TableNum(SalesPricingCD)). company(departmentDataArea.Id); this.queryRun.query().dataSourceTable(TableNum(HistoryUpdateRetailPrice)). company(departmentDataArea.Id); } ret = super(); if(!ret) return ret; } } return ret; } Есть следующая проблема: при переходе к очередной компании (например к AMP после AL), меняется company только у первой таблицы, а у второй всегда остается одинаковой (привожу запрос из журнала трассировки операторов SQL): SELECT COUNT(A.RECID),A.APPROVEUSERID FROM SALESPRICINGCD A WHERE ((A.DATAAREAID='amp') AND (A.STATUS=1)) AND NOT EXISTS (SELECT 'x' FROM HISTORYUPDATERETAILPRICE B WHERE ((B.DATAAREAID='al') AND (A.INVENTSERIALID=B.INVENTSERIALID))) GROUP BY A.DATAAREAID,A.APPROVEUSERID ORDER BY A.DATAAREAID,A.APPROVEUSERID OPTION(FAST 11) В чем моя ошибка? |
|
26.07.2009, 15:38 | #2 |
MCTS
|
Query (и соотвественно queryRun) должен переинициализироваться заново и внутри операции changeCompany при изменении компании. Зачем делать ...company(departmentDataArea.Id);? Если у вас компания и так уже меняется операцией changeCompany
|
|
26.07.2009, 22:48 | #3 |
MCITP
|
Наверное как раз человек так пытался сделать, чтоб квери работала в новой компании без переинициализации.
__________________
Zhirenkov Vitaly |
|
27.07.2009, 09:14 | #4 |
Участник
|
|
|
27.07.2009, 09:17 | #5 |
MCTS
|
Цитата:
Должны, но не делают этого.
|
|
27.07.2009, 09:55 | #6 |
Участник
|
Простите, не понимаю. Каким образом? Убить QueryRun?
|
|
Теги |
ax3.0, sql, компания |
|
|