Pergunta

Preciso adicionar um segundo DataTable do DataSet principal do nosso aplicativo em um relatório, mas não estou tendo muita sorte.

Temos vários relatórios locais simples em arquivos RDLC, cada um com um único DataTable com base em uma visualização em nosso banco de dados de aplicativo.Preciso melhorar um dos relatórios para adicionar informações de outra tabela.Esta outra tabela é definida no mesmo núcleo DataSet que usamos para relatórios em nosso aplicativo .NET 2.0 WinForms.Como as duas tabelas estão no mesmo DataSet, posso apenas garantir que ambas as tabelas sejam carregadas no DataSet e, em seguida, apontar o relatório para o DataSet em vez de para o DataTable?Algo mais?

Escusado será dizer que estou brincando com isso há algum tempo e não cheguei a lugar nenhum.

Tia, Matt

Foi útil?

Solução

OK, fiz isso funcionar e, em retrospecto, foi muito fácil.Eu simplesmente não sabia quais menus usar para fazer o VS conectar tudo e em que ordem fazê-los.

Olhar para o Designer.cs do meu formulário foi, na verdade, a coisa mais útil que fiz.Notei que o ReportViewer tem um BindingSource padrão apontado para a primeira tabela.Originalmente, eu estava tentando dar ao BindingSource um DataSet em vez de um DataTable, mas então decidi tentar fazer um segundo BindingSource.

Talvez haja uma maneira melhor, mas basicamente eis o que acabei fazendo:

  1. Com o RDLC no designer, clique no menu Relatório e depois em Fontes de Dados.

  2. Na caixa de diálogo Fontes de dados do relatório, escolha o DataTable adicional no menu suspenso e clique em Adicionar ao relatório.(Também renomeei a nova fonte de dados para ser apenas o nome da tabela de dados adicional;VS criou um nome longo gigantesco baseado no namespace completo.) OK para fechar a caixa de diálogo.

  3. No designer do formulário que contém meu controle ReportViewer, cliquei na marca inteligente do ReportViewer (a pequena seta no canto superior direito do controle) e selecione Revincular fontes de dados.Isso fez com que um segundo BindingSource aparecesse na parte inferior da superfície do Designer.

  4. Cliquei novamente na etiqueta inteligente do ReportViewer e desta vez escolhi "Escolher fontes de dados" para confirmar que o ReportViewer agora tinha duas fontes de dados, cada uma vinculada a uma das BindingSource instâncias agora no formulário.

  5. Revisei o código OnLoad do meu formulário para carregar linhas no segundo DataTable.

  6. Voltei ao arquivo RDLC, adicionei uma nova tabela e configurei as células de detalhes para os campos do segundo DataTable - e funcionou!

Esperançosamente, isso economizará algumas horas para alguém algum dia.

Outras dicas

Descobri uma maneira de usá-lo no Visual Studio 2010.Clique em Exibir > ReportData e quando os dados do relatório forem vistos, clique em Fontes de dados e depois clique em adicionar.FAÇA isso quantas vezes for necessário o número de conjuntos de dados.

Agora nas tags inteligentes do reportviewer, clique em escolher fontes de dados, isso mostrará cada um dos conjuntos de dados.Para associar os conjuntos de dados a uma fonte de ligação, você terá que clicar em Projeto e depois clicar ainda mais até obter a classe apropriada, isso fará com que as fontes de ligação sejam criadas.

Esta solução alternativa é muito útil se você tiver vários tablixes e precisar associar uma fonte de ligação a eles dentro do mesmo relatório quando o relatório for exibido no visualizador de relatórios

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top