|
24.05.2013, 17:02 | #1 |
Участник
|
Цитата:
Сообщение от maldini
Странно! Каким способом ты получаешь данные из запроса.
Вот такой пример работает без проблем X++: Queryrun main_query(boolean _count_query = false) { VendInvoiceJour VendInvoiceJour; QueryRun QueryRun; Query query = new Query(); QueryBuildDataSource qbds; QueryBuildRange qbr; ; qbds = query.addDataSource(tablenum(VendInvoiceJour)); qbds.addSortField(fieldnum(VendInvoiceJour,purchId)); qbds.addSelectionField(fieldnum(VendInvoiceJour,Qty), SelectionField::Sum); qbds.orderMode(OrderMode::GroupBy); qbds = qbds.addDataSource(tablenum(VendInvoiceTrans)); qbds.addLink(fieldnum(VendInvoiceJour,purchId),fieldnum(VendInvoiceTrans,purchId)); qbds.joinMode(JoinMode::InnerJoin); qbds = query.dataSourceTable(tableNum(VendInvoiceJour)); QueryRun = new QueryRun(query); while (queryRun.next()) { VendInvoiceJour = QueryRun.get(tablenum(VendInvoiceJour)); info(strFmt("%1 %2",VendInvoiceJour.PurchId,VendInvoiceJour.Qty); } } Как всё-таки правильно? У меня связи таблиц немного другие ListJour => ListTrans - один ко многим ListTrans => VendInvoiceTrans - много ко многим. Может быть из-за этого проблема? |
|
24.05.2013, 17:07 | #2 |
Участник
|
Цитата:
X++: qdbs = query.dataSourceTable(tableNum(VendInvoiceJour)); X++: qbds.joinMode(JoinMode::InnerJoin); Последний раз редактировалось maldini; 24.05.2013 в 17:12. |
|
24.05.2013, 17:11 | #3 |
Участник
|
Цитата:
Сообщение от maldini
QDBS тут совсем не причем. Всеравно все от query идет. Просто в вашем случае можно в любое место добавить какое либо условия, а в моем придется в переменную qdbs предварительно получить datasource того запроса куда буду добовлять фильтр, вот так
X++: qdbs = query.dataSourceTable(tableNum(VendInvoiceJour)); |
|
24.05.2013, 17:14 | #4 |
Участник
|
|
|
24.05.2013, 17:16 | #5 |
Участник
|
Цитата:
X++: queryRun = this.main_query(); while(queryRun.next()) { vendsp = queryRun.get(tablenum(VendSpListJour)); vendsplist = queryRun.get(tablenum(VendSpListTrans)); vendinvoice = queryRun.get(tablenum(VendInvoiceTrans)); |
|
24.05.2013, 17:17 | #6 |
Участник
|
Цитата:
X++: void main_query(boolean _count_query = false) { VendInvoiceJour VendInvoiceJour; VendInvoiceTrans VendInvoiceTrans; QueryRun QueryRun; Query query = new Query(); QueryBuildDataSource qbds; QueryBuildRange qbr; ; qbds = query.addDataSource(tablenum(VendInvoiceJour)); qbds.addSortField(fieldnum(VendInvoiceJour,purchId)); qbds.addSelectionField(fieldnum(VendInvoiceJour,Qty), SelectionField::Sum); qbds.orderMode(OrderMode::GroupBy); qbds.addRange(fieldnum(VendInvoiceJour,purchId)).value('Номер закупки'); qbds = qbds.addDataSource(tablenum(VendInvoiceTrans)); qbds.addSortField(fieldnum(VendInvoiceTrans,purchId)); qbds.orderMode(OrderMode::GroupBy); qbds.addLink(fieldnum(VendInvoiceJour,purchId),fieldnum(VendInvoiceTrans,purchId)); QueryRun = new QueryRun(query); while (queryRun.next()) { VendInvoiceJour = QueryRun.get(tablenum(VendInvoiceJour)); VendInvoiceTrans = QueryRun.get(tablenum(VendInvoiceTrans)); info(strFmt("%1 %2",VendInvoiceJour.PurchId,VendInvoiceJour.Qty)); info(strFmt("%1",VendInvoiceTrans.PurchId)); } } Последний раз редактировалось maldini; 24.05.2013 в 17:44. |
|
24.05.2013, 17:18 | #7 |
Участник
|
|
|
24.05.2013, 17:36 | #8 |
Участник
|
|
|
24.05.2013, 17:40 | #9 |
Участник
|
Цитата:
Скажите, пожалуйста, а каким образом их добавить в группировку? К какому Qbds их цеплять ? Сейчас опять запрос валится с ошибкой что Источник данных не входит в состав родительского источника данных. |
|
Теги |
group by, query, группировка |
|
|