17.02.2005, 09:23 | #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 не получается. Что я пишу не правильно? |
|
17.02.2005, 09:32 | #2 |
Участник
|
вот неправильный итог
ИТОГО (кг) по пленка 100 ИТОГО (кг) по пузырек 323 ИТОГО (кг) по коробочка 20 ИТОГО (кг) по пленка 1 100.00 ИТОГО (кг) по пузырек 3 553.00 ИТОГО (кг) по коробочка 220 должно быть ИТОГО (кг) по пленка 1 200.00 ИТОГО (кг) по пузырек 3 878.00 ИТОГО (кг) по коробочка 240 |
|
17.02.2005, 11:11 | #3 |
Роман Долгополов (RDOL)
|
PHP код:
|
|
17.02.2005, 11:52 | #4 |
Участник
|
db, я смайлик отключил в коде вашего сообщения.
|
|
17.02.2005, 12:39 | #5 |
Участник
|
Добавление этой строки ничего не изменило
|
|
17.02.2005, 12:47 | #6 |
Роман Долгополов (RDOL)
|
сорри, еще не хватает
qbd2.joinmode(joinmode:: innerjoin) qbd.orderMode(OrderMode:: GroupBy) тестировать запрос у меня никакго желания нет если не заработает, попробуйте написать джобик и отладьте там этот запрос отдельно от отчета. |
|
17.02.2005, 13:15 | #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)); |
|
17.02.2005, 13:29 | #8 |
Moderator
|
Осмелюсь предположить, что проблема в
PHP код:
__________________
Андрей. |
|
17.02.2005, 13:31 | #9 |
Участник
|
как я уже отмечала раньше, Но итог прежний, независимо от вида Join
|
|
17.02.2005, 13:33 | #10 |
Роман Долгополов (RDOL)
|
one2one на нужен и на qbds1 и на qbds2
|
|
17.02.2005, 13:35 | #11 |
Moderator
|
Кстати, по-моему, добавление qbds2 вообще лишнее. У вас же группировка ведется по связующему полю из таблицы, относящейся к qbds1.
__________________
Андрей. |
|
17.02.2005, 13:39 | #12 |
Участник
|
добавила one2one 8 qbds & qbds2. Результат тот же… У меня есть мысль, ято GroupBy действует только в рамках последней таблицы, а не всего запроса. Такое возможно? И как быть в таком случае?
|
|
18.02.2005, 11:25 | #13 |
Участник
|
Re: Построение запроса в QueryBuild
Цитата:
Изначально опубликовано vesna
... Есть полученый this.query() из DataSource, связанного из двух таблиц CustInvoiceJourn и CustInvoicTrans с фильтром по параметрам из Dialog. |
|
18.02.2005, 13:33 | #14 |
Участник
|
Прикрепляю XPO с содержанием Отчета. Там запрос строится из связанных DS. Метод, где живет запрос - GroupOfPackagingMaterial()
|
|
|
Похожие темы | ||||
Тема | Ответов | |||
Подготовка запроса(ламерские вопросы продолжаются) | 4 | |||
Изменить план выполнения запроса | 2 | |||
Быстродействие запроса | 1 | |||
Оптимизация запроса | 16 | |||
Производительность запроса в отчете | 14 |
|