Inquiridor
Relatório dinâmico, é possível?

Pergunta
-
Bom, minha situação é bem especifica, talvez seja uma funcionalidade não usada ainda (ou ja bastante usada
).
Tenho consultas bem dinâmicas, com vários filtros e agrupamento. Gostaria de aproveitar essas consultas (salvas em um DataSet em sessão, cada consulta em um DataTable, gerados por uma classe) para criar relatórios.
Como as consultas são dinâmicas, não tenho como criar o design do relatório, apenas posso configurar cabeçalho, rodapé e adicionar um Table.
Queria saber se é possível criar os TextBoxes em tempo de execução do relatório, pois não sei a quantidade de colunas do relatório, qual o agrupamento, somatório dos campos etc.
Uso o Visual Studio 2008 e o controle ReportViewer.
Qualquer dica, será bem aceita
Luciano Pimenta.
Todas as Respostas
-
Luciano,
SSRS a nível de desenvolvimento não é meu forte...
mas veja esse exemplo ajuda:
http://www.gotreportviewer.com
http://www.gotreportviewer.com/DynamicTable.zip
O cara gera o relatório de acordo com o XML que vc escolher.
Abraço
-
-
Esse link que o Lucas passou é bem interessante, contém bons exemplos. Só adicionando alguns Comentários/Links que também podem ser úteis.
Aqui tem dois tutoriais no MSDN que tratam desse assunto:
Generating RDL Using the .NET Framework
http://msdn.microsoft.com/en-us/library/ms170667.aspx
Updating Reports Using Classes Generated from the RDL Schema
http://msdn.microsoft.com/en-us/library/aa337451.aspx
O primeiro utiliza um XmlTextWritter e escreve direto o Xml do RDL. O segundo é particularmente interessante porque ensina como você cria uma classe para adicionar ao seu projeto com base no XSD da RDL (essa técnica é a mesma usada pelo exemplo que o Lucas passou acima).
Além disso, a RDL (Report Definition Language) usada pelo Reporting Services tem especificação pública:
http://www.microsoft.com/sql/technologies/reporting/rdlspec.mspx
http://download.microsoft.com/download/c/2/0/c2091a26-d7bf-4464-8535-dbc31fb45d3c/rdlNov05.pdf
Então você pode usar essas especificações e gerar suas proprias RDLs. Outra dica é que um arquivo RDL/RDLC é simplesmente um XML, então você pode utilizar o ReportDesigner e ver o código XML (Right click no report / View Code) gerado para ver como ele monta as tabelas, agrupamentos, textboxes, etc...
Att,
Boreki