Inquiridor
Dúvida com Joins de Datasource

Pergunta
-
Bom dia,
Tenho que montar um relatório que contenha dados das seuintes tabelas: ProdTable, ProBom, InvenTable, InventDim e InventLocation.
Tenho que trazer no header do relatório os dados de uma ProdID e no body os ProBOM dessa ProdID, assim como outros detalhes que vem da InventTable e InventLocation.
Eu fiz isso no sql server e deu certo, abaixo coloco meu código SQL que traz o resultado desejado:
select PRODTABLE.PRODID,
PRODTABLE.NAME,
PRODTABLE.ITEMID,
INVENTLOCATION.NAME AS DEPOSITO,
INVENTDIM.WMSLOCATIONID AS LOCALL,
PRODBOM.ITEMID AS ITEM,
INVENTTABLE.ITEMNAME AS DESCRICAO,
PRODBOM.BOMQTY AS QTD_UNI
from PRODTABLE,
PRODBOM,
INVENTTABLE,
INVENTLOCATION,
INVENTDIM
where PRODTABLE.PRODID = '00000073_110'
AND PRODBOM.PRODID = PRODTABLE.PRODID
AND PRODBOM.ITEMID = INVENTTABLE.ITEMID
AND INVENTDIM.INVENTLOCATIONID = INVENTLOCATION.INVENTLOCATIONID
AND PRODBOM.INVENTDIMID = INVENTDIM.INVENTDIMID
A dúvida é: como montar a estrutura de datasources com suas relações..
eu tentei fazer assim:
ProBOM_DS (Data source principal)
- ProdTable_DS ( Datasource dentro de ProdBOM_DS - 1:N - ProdBOM_DS.ProdId == ProdTable_DS.ProdID )
- InventDim_DS ( Datasource dentro de ProdBOM_DS - 1:1 - ProdBOM_DS.InventDimId == InventDim.InventDimId )
- InventTable_DS ( Datasource dentro de ProdBOM_DS - 1:1 - ProdBOM_DS.ItemId== InventTable.ItemId )
- InventLocation_DS ( Datasource dentro de InventDim_DS- 1:N - InventDim.InventIdLocation== InventLocation. InventIdLocation)
Assim sendo, os itens que estão no body estão vindo corretos, mas o problmea está no header que são valores da prodTable, estão todos vazios, alguem pode me ajudar onde to errando? Eu fiz certo esses joins?
Att,
Rafael
Todas as Respostas
-
Rafael,
A tradução da sua instrução para um objeto query está no xpo abaixo, no entanto, é necessário um entendimento um pouco mais avançado para trabalhar com estes objetos. Eu te aconselho a dar uma olhada nas classes: query e querybuilddatasource.
Da forma que eu fiz no XPO, eu deixei a query pronta para ser usada, de uma forma mais fácil e assim você só precisa chamá-la e fazer o while(querRun.next()) e colher os resultados normalmente. Para um exemplo, veja os tradelooptrans na SalesInvoice_BR.
Exportfile for AOT version 1.0 or later
Formatversion: 1
***Element: QUE
; Microsoft Dynamics Query: MSDN_Help descarregado
; --------------------------------------------------------------------------------
VERSION 8
QUERY #MSDN_Help
PROPERTIES
Name #MSDN_Help
Version #43
NextUniqueId #1006
ENDPROPERTIES
METHODS
Version: 3
SOURCE #classDeclaration
#public class QueryRun extends ObjectRun
#{
#}
ENDSOURCE
ENDMETHODS
BLOCKS
BLOCK #prodtable
PROPERTIES
Name #ProdTable
Table #prodtable
UniqueId #1000
ENDPROPERTIES
FIELDLIST
PROPERTIES
ENDPROPERTIES
ENDFIELDLIST
SORTING
ENDSORTING
LINES
LINE #ProdId
PROPERTIES
Name #ProdId
Table #prodtable
Field #ProdId
ENDPROPERTIES
ENDLINES
BLOCKS
BLOCK #prodbom
PROPERTIES
Name #ProdBOM
Table #prodbom
UniqueId #1001
ENDPROPERTIES
FIELDLIST
PROPERTIES
ENDPROPERTIES
ENDFIELDLIST
SORTING
ENDSORTING
LINES
ENDLINES
BLOCKS
BLOCK #inventtable
PROPERTIES
Name #InventTable
Table #inventtable
UniqueId #1002
ENDPROPERTIES
FIELDLIST
PROPERTIES
ENDPROPERTIES
ENDFIELDLIST
SORTING
ENDSORTING
LINES
ENDLINES
BLOCKS
BLOCK #Address
PROPERTIES
Name #Address_1
Table #Address
UniqueId #1003
ENDPROPERTIES
FIELDLIST
PROPERTIES
ENDPROPERTIES
ENDFIELDLIST
SORTING
ENDSORTING
LINES
ENDLINES
BLOCKS
ENDBLOCKS
ASSOCIATIONS
ENDASSOCIATIONS
ENDBLOCK
ENDBLOCKS
ASSOCIATIONS
ASSOCIATION
MASTERFIELD #ItemId
DETAILSFIELD #ItemId
ENDASSOCIATIONS
ENDBLOCK
BLOCK #inventdim
PROPERTIES
Name #InventDim
Table #inventdim
UniqueId #1004
ENDPROPERTIES
FIELDLIST
PROPERTIES
ENDPROPERTIES
ENDFIELDLIST
SORTING
ENDSORTING
LINES
ENDLINES
BLOCKS
BLOCK #InventLocation
PROPERTIES
Name #InventLocation
Table #InventLocation
UniqueId #1005
ENDPROPERTIES
FIELDLIST
PROPERTIES
ENDPROPERTIES
ENDFIELDLIST
SORTING
ENDSORTING
LINES
ENDLINES
BLOCKS
ENDBLOCKS
ASSOCIATIONS
ASSOCIATION
MASTERFIELD #InventLocationId
DETAILSFIELD #InventLocationId
ENDASSOCIATIONS
ENDBLOCK
ENDBLOCKS
ASSOCIATIONS
ASSOCIATION
MASTERFIELD #InventDimId
DETAILSFIELD #inventDimId
ENDASSOCIATIONS
ENDBLOCK
ENDBLOCKS
ASSOCIATIONS
ASSOCIATION
MASTERFIELD #ProdId
DETAILSFIELD #ProdId
ENDASSOCIATIONS
ENDBLOCK
ENDBLOCKS
ENDBLOCK
ENDBLOCKS
ENDQUERY
***Element: END
[]sPichler
Pichler