22.08.2013, 09:20 | #1 |
Программатор
|
Ax 2012. Копирование Range из Query
Коллеги, добрый день! Столкнулся с непонятной ситуацией. Не понимаю что, я делаю не так. Есть форма с фильтрами для запуска отчёта с кнопкой ВЫБОР. Пользователь нажимает кнопку и задает нужные ему фильтры. затем эти фильтры мне нужно скопировать в другой квери. Что имеем:
1. Запрос на кнопке выбор: X++: void initQuery() { Query query = new Query(); QueryBuildDataSource qbdsTable; QueryBuildDataSource qbdsLine; ; qbdsTable = query.addDataSource(tablenum(PurchMarkupRptTable)); qbdsTable.addGroupByField(fieldNum(PurchMarkupRptTable PurchId)); qbdsTable.addGroupByField(fieldNum(PurchMarkupRptTable RequestNumOfCarrier)); qbdsTable.addGroupByField(fieldNum(PurchMarkupRptTable, VendAccount)); qbdsLine = qbdsTable.addDataSource(tableNum(PurchMarkupRptLine)); qbdsLine.relations(true); qbdsLine.joinMode(JoinMode::ExistsJoin); queryrun = new SysQueryRun(query); } X++: this.queryRun().query().dataSourceTable(tableNum(PurchMarkupRptTable)).addRange(fieldNum(PurchMarkupRptTable DeliveryDate)).value(SysQuery::range(fromDate, toDate)); NAME: queryRun VALUE: Query object 138c3128: SELECT * FROM PurchMarkupRptTable(PurchMarkupRptTable_1) GROUP BY PurchMarkupRptTable.PurchId, PurchMarkupRptTable.RequestNumOfCarrier, PurchMarkupRptTable.VendAccount WHERE ((DeliveryDate>={ts '2013-01-01 00:00:00.000'} AND DeliveryDate<={ts '2013-12-31 00:00:00.000'})) AND ((PurchMarkupRptTable(PurchMarkupRptTable_1).CurrencyCode = N'AMD')) EXISTS JOIN * FROM PurchMarkupRptLine(PurchMarkupRptLine_1) WHERE PurchMarkupRptTable.LineNumber = PurchMarkupRptLine.LineNumber AND PurchMarkupRptTable.PurchId = PurchMarkupRptLine.PurchId TYPE: QueryRun 4. переписываю рейнджи в новый квери, запрос из пункта 3 лежит в queryRun X++: for (i = 1; i <= queryRun.query().dataSourceCount(); i++) { qbdsFrom = queryRun.query().dataSourceNo(i); for (j = 1; j <= qbdsFrom.rangeCount(); j++) { qbrFrom = qbdsFrom.range(j); if (qbrFrom.value()) { qbr = q.dataSourceNo(i).addRange(qbdsFrom.range(j).field()); qbr.value(qbrFrom.value()); } } } AND ((PurchMarkupRptTable(PurchMarkupRptTable_1).CurrencyCode = N'AMD')), почему не AND CurrencyCode = N'AMD'??? Что я делаю не так? Заранее спасибо Последний раз редактировалось Sada; 22.08.2013 в 09:24. |
|
22.08.2013, 09:56 | #2 |
Участник
|
Почитай \Classes\SysQuery\mergeFilters и истина откроется для тебя
__________________
любитель портвейна и снов с прокисшей капустой в усах |
|
|
За это сообщение автора поблагодарили: Sada (5), ice (1), NickMDAX (1). |
22.08.2013, 10:10 | #3 |
Программатор
|
Блиииин, я так и знал, что что-то забыл. Спасибо!!!
|
|
|
|