|
|
#1 |
|
Участник
|
Построение запроса в QueryBuild
Здравствуйте.
Не могу построить запрос в Report. Есть полученый this.query() из DataSource, связанного из двух таблиц CustInvoiceJourn и CustInvoicTrans с фильтром по параметрам из Dialog. Мне надо в конце отчета построить группировку по вспомогательной таблице InventPackagingMaterialCode , по полю PackMaterialCode с выводом суммы Trans.Qty по сообветствующей связи. Схематично итоговый запрос выглядит так: tr = this.query(); select sum(tr.Qty), mat.code from tr, mat where (tr.code = mat.trcod) group by mat.code q = this.queryRun().query(); qbd = q.dataSourceTable(tableNum(CustInvoiceTrans)); qbds = qbd.addDataSource(tableNum(InventPackagingUnit)); qbds.addLink(fieldnum(CustInvoiceTrans, ItemId), fieldnum(InventPackagingUnit, ItemRelation)); qbds.addSelectionField(fieldNum(CustInvoiceTrans, Qty), SelectionField::Sum); qbds.addRange(fieldNum(InventPackagingUnit, ItemCode)).value(Enum2Str(TableGroupAll::Table)); qbds1 = qbds.addDataSource(tableNum(InventPackagingUnitMaterial)); qbds1.addLink(fieldnum(InventPackagingUnit, RecId), fieldnum(InventPackagingUnitMaterial, PackingUnitRecId)); qbds2 = qbds1.addDataSource(tableNum(InventPackagingMaterialCode)); qbds2.addSelectionField(fieldNum(InventPackagingMaterialCode,PackMaterialCode)); qbds2.addLink(fieldnum(InventPackagingUnitMaterial, PackMaterialCode), fieldnum(InventPackagingMaterialCode, PackMaterialCode)); qbds2.orderMode(OrderMode::GroupBy); qbds2.addSortField(fieldNum(InventPackagingMaterialCode, PackMaterialCode)); нужной группировки по полю PackMaterialCode не получается. Что я пишу не правильно? |
|
|
|
|
#2 |
|
Участник
|
вот неправильный итог
ИТОГО (кг) по пленка 100 ИТОГО (кг) по пузырек 323 ИТОГО (кг) по коробочка 20 ИТОГО (кг) по пленка 1 100.00 ИТОГО (кг) по пузырек 3 553.00 ИТОГО (кг) по коробочка 220 должно быть ИТОГО (кг) по пленка 1 200.00 ИТОГО (кг) по пузырек 3 878.00 ИТОГО (кг) по коробочка 240 |
|
|
|
|
#3 |
|
Роман Долгополов (RDOL)
|
PHP код:
|
|
|
|
|
#4 |
|
Участник
|
db, я смайлик отключил в коде вашего сообщения.
|
|
|
|
|
#5 |
|
Участник
|
Добавление этой строки ничего не изменило
|
|
|
|
|
#6 |
|
Роман Долгополов (RDOL)
|
сорри, еще не хватает
qbd2.joinmode(joinmode:: innerjoin) qbd.orderMode(OrderMode:: GroupBy) тестировать запрос у меня никакго желания нет если не заработает, попробуйте написать джобик и отладьте там этот запрос отдельно от отчета. |
|
|
|
|
#7 |
|
Участник
|
X++: q = this.queryRun().query();
qbd = q.dataSourceTable(tableNum(CustInvoiceTrans));
qbds = qbd.addDataSource(tableNum(InventPackagingUnit));
qbds.joinMode(JoinMode::InnerJoin);
qbds.addLink(fieldnum(CustInvoiceTrans, ItemId), fieldnum(InventPackagingUnit, ItemRelation));
qbds.addSelectionField(fieldNum(CustInvoiceTrans, Qty), SelectionField::Sum);
qbds.addRange(fieldNum(InventPackagingUnit, ItemCode)).value(Enum2Str(TableGroupAll::Table));
qbds1 = qbds.addDataSource(tableNum(InventPackagingUnitMaterial));
qbds1.joinMode(JoinMode::InnerJoin);
qbds1.addLink(fieldnum(InventPackagingUnit, RecId), fieldnum(InventPackagingUnitMaterial, PackingUnitRecId));
qbds2 = qbds1.addDataSource(tableNum(InventPackagingMaterialCode));
qbds2.addSelectionField(fieldNum(InventPackagingMaterialCode,PackMaterialCode));
qbds2.addLink(fieldnum(InventPackagingUnitMaterial, PackMaterialCode), fieldnum(InventPackagingMaterialCode, PackMaterialCode));
qbds2.joinMode(JoinMode::ExistsJoin);
qbds2.fetchmode(queryfetchmode::one2one);
qbds2.orderMode(OrderMode::GroupBy);
qbds2.addSortField(fieldNum(InventPackagingMaterialCode, PackMaterialCode)); |
|
|
|
|
#8 |
|
Moderator
|
Осмелюсь предположить, что проблема в
PHP код:
__________________
Андрей. |
|
|
|
|
#9 |
|
Участник
|
как я уже отмечала раньше, Но итог прежний, независимо от вида Join
|
|
|
|
|
#10 |
|
Роман Долгополов (RDOL)
|
one2one на нужен и на qbds1 и на qbds2
|
|
|
|
|
#11 |
|
Moderator
|
Кстати, по-моему, добавление qbds2 вообще лишнее. У вас же группировка ведется по связующему полю из таблицы, относящейся к qbds1.
__________________
Андрей. |
|
|
|
|
#12 |
|
Участник
|
добавила one2one 8 qbds & qbds2. Результат тот же… У меня есть мысль, ято GroupBy действует только в рамках последней таблицы, а не всего запроса. Такое возможно? И как быть в таком случае?
|
|
|
|
|
#13 |
|
Участник
|
Re: Построение запроса в QueryBuild
Цитата:
Изначально опубликовано vesna
... Есть полученый this.query() из DataSource, связанного из двух таблиц CustInvoiceJourn и CustInvoicTrans с фильтром по параметрам из Dialog. |
|
|
|
|
#14 |
|
Участник
|
Прикрепляю XPO с содержанием Отчета. Там запрос строится из связанных DS. Метод, где живет запрос - GroupOfPackagingMaterial()
|
|
|
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| Подготовка запроса(ламерские вопросы продолжаются) | 4 | |||
| Изменить план выполнения запроса | 2 | |||
| Быстродействие запроса | 1 | |||
| Оптимизация запроса | 16 | |||
| Производительность запроса в отчете | 14 | |||
|