Esses dias precisei criar um sub-report para um determinado relatorio que estava desenvolvendo, como ja havia passado por um projeto onde vi alguns relatorios feitos dessa maneira fui atras para saber como funciona e como fazer, nao achei nenhuma referencia na web alem do MSDN Library e por isso estou escrevendo esse novo post. Os sub-reports sao relatorios que o usuario abre clicando em um item relacionado no relatorio principal abrindo um detalhamento do registro. Para exemplificar vou criar algo bem pratico e simples que e o relatorio baseado em Diarios. Criei uma query simples apenas com a LedgerJournalTable, ordenado pelo JournalNum e uma query com a LedgerJournalTrans ordenado pelo AccountNum: Em seguida no Visual Studio criei um novo projeto em C# com o template Dynamics AX Reporting Project, renomeei o projeto para AeDX_SubReport. Utilizei um layout padrao que existe no AX, para isso precisamos fazer o seguinte: No menu File > Add > Existing Project from Dynamics AX. Uma nova janela abrira com os Report Library que existem na AOT. Vamos selecionar Shared Library. No Solution Explorer, vamos clicar com o botao direito no projeto AeDX_SubReport e selecionar AddReference. Na tab Projects, vamos selecionar o projeto Shared Library, clicar em Add e depois em OK. Em seguida vamos criar nossos relatorios: um relatorio de nivel superior e um relatorio de detalhamento. O relatorio superior ira conter uma lista com todos os diarios da tabela LedgerJournalTable. E o relatorio de detalhamento sera um relatorio mais detalhado que ira exibir as informacoes das linhas dos diarios selecionado no relatorio de nivel superior. Vamos adicionar um parametro e um filtro para o relatorio de detalhamento. O filtro vai filtrar os dados no relatorio de analise com base no valor do parametro. Para criar o relatorio de nivel superior:Na Solution Explorer no projeto AeDX_SubReport vamos renomear o relatorio Report1.moxl para LedgerJournalTable.moxl.Vamos adicionar um novo Dataset.De um duplo clique e vamos selecionar a nossa query AeDX_LedgerJournalTable e os campos que iremos utilizar, nesse exemplo vou selecionar os campos JournalNum, JournalName, JournalTotalCredit, JournalTotalDebit.Selecione o Dataset e clique com o botao direto e va em Properties e vamos alterar a propriedade Name para: LedgerJournalTable.Agora vamos gerar o design do nosso relatorio arrastando nosso Dataset para o no Design, o design automaticamente e nomeado AutoDesign1.Selecione o no AutoDesign1, clique com o botao direito e selecione Properties.Na propriedade LayoutTemplate vamos selecionar ReportLayoutStyleTemplate e na propriedade Title vamos alterar para Diarios.Agora vamos expandir o no AutoDesign1 e selecionar o no table LedgerJournalTableTable e em Properties, defina o modelo Style Template para TableStyleTemplate e alterar para LedgerJournalTable a propriedade Title.Para criar o relatorio de detalhamento:Na Solution Explorer vamos clicar com o botao direito no projeto AeDX_SubReport > Add > New Item.Vamos selecionar Report e renomea-lo para LedgerJournalTrans.moxl e clicar em Add.Vamos adicionar um novo Dataset.De um duplo clique e vamos selecionar a nossa query AeDX_LedgerJournalTrans e os campos que iremos utilizar, nesse exemplo vou selecionar os campos JournalNum, AccountNum, BankAccountId, AmountCurCredit, AmountCurDebit.Selecione o Dataset e clique com o botao direto e va em Properties e vamos alterar a propriedade Name para: LedgerJournalTrans