none
Dúvida report viewer RRS feed

  • Pergunta

  • Dúvida report viewer 

    Tenho um projeto windows forms mvc (3 camadas)

    Na tela de vendas onde é preenchido as informações de venda, como cliente e itens da venda...
    No momento que clico em salvar eu não limpo os campos e as informações permanecem lá na tela.

    nesse momento eu quero pegar essas informações e mandar para impressão sem fazer busca no banco pois
    as informações quero pega-las da tela que estão ali congeladas !

    -----------------------------------------------------------
    conforme o código abaixo eu capturo as informações que estão sendo carregadas em uma label eu
    passo por parâmetro e maravilha exibo o relatório porem os itens de venda vem de um datagriview!

    gostaria de uma ajuda pois é possível capturar as informações que estão na tela desse grid 
    e enviar para impressão no mesmo código que já pego o que esta fora do datagriview conforme o
    código abaixo??

    alguém sabe me informar se da para fazer dessa maneira e teria um exemplo ?

    Obrigado

    namespace RELATORIO
    {
        public partial class frmImpressaoTeste : Form
        {
            public frmImpressaoTeste(String Nome)
            {
                InitializeComponent();
    
                reportViewer1.LocalReport.DataSources.Clear();     
                reportViewer1.LocalReport.ReportEmbeddedResource = "RELATORIO.rptImpressaoTeste.rdlc";  
    
                //setando os parametros
                Microsoft.Reporting.WinForms.ReportParameter[] p = new 	    Microsoft.Reporting.WinForms.ReportParameter[1];
    
                p[0] = new Microsoft.Reporting.WinForms.ReportParameter("Nome", Nome);
    
                //setando os parametros no relatorio
                reportViewer1.LocalReport.SetParameters(p);
                reportViewer1.LocalReport.Refresh();
                reportViewer1.RefreshReport();
            }
           
        }
    }
    
    //---------------------------------
    frmImpressaoTeste f = new frmImpressaoTeste(lblCliente.Text);
    f.Show();

    quarta-feira, 2 de novembro de 2016 14:35

Respostas

  • Olá Alexandre!

    Você disse que já criou a table no Report Viewer, certo? Como é que você definiu a DataSource da tabela (que o Report Viewer pergunta automaticamente quando você tenta criar uma tabela) sem ter um DataSet no projeto?

    O jeito mais fácil para resolver esse problema seria criar uma classe no seu projeto que represente essa estrutura de dados que você quer mostrar no relatório (ou seja, uma classe contendo as propriedades Codigo, Nome, Quantidade, ValorUnitario, ValorTotal).. Em seguida, no relatório você cria um novo DataSource utilizando como basse essa classe que você acabou de criar..

    Aí, na hora de gerar o relatório, você cria um List dessa classe (List<SuaClasse>), carrega a lista com os dados do grid e passa essa lista para o seu relatório dessa forma:

    reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("NomeDoSeuDataSource", suaLista));

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    terça-feira, 8 de novembro de 2016 04:17
    Moderador
  • Olá novamente Alexandre!

    Só para complementar, você pode seguir a mesma ideia que eu utilizei neste artigo aqui (só ignorando a parte em que eu pego os dados do banco de dados):

    Gerando relatórios do Report Viewer com Entity Framework

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    terça-feira, 8 de novembro de 2016 04:19
    Moderador

Todas as Respostas

  • Você tera que colocar uma table no reportviewer e criar um datatable associando o mesmo a essa tabela no seu form quando chamar o relatorio terá que passar um datatable com as mesmas colunas carregadas para esse datatable que os dados da grid será exibidos no relatorio

    Links
    https://msdn.microsoft.com/pt-BR/library/ms252073.aspx
    http://www.linhadecodigo.com.br/artigo/3665/gerando-relatorios-com-reportviewer-em-aspnet.aspx

    Junior

    quarta-feira, 2 de novembro de 2016 16:16
  • Esses links são em vb e asp o que não me da uma visão de como prosseguir,

    já criei o  table no reportviewer mas não sei como implementar no código pegando o que está na tela ?



    quinta-feira, 3 de novembro de 2016 11:11
  • Olá Alexandre!

    Você disse que já criou a table no Report Viewer, certo? Como é que você definiu a DataSource da tabela (que o Report Viewer pergunta automaticamente quando você tenta criar uma tabela) sem ter um DataSet no projeto?

    O jeito mais fácil para resolver esse problema seria criar uma classe no seu projeto que represente essa estrutura de dados que você quer mostrar no relatório (ou seja, uma classe contendo as propriedades Codigo, Nome, Quantidade, ValorUnitario, ValorTotal).. Em seguida, no relatório você cria um novo DataSource utilizando como basse essa classe que você acabou de criar..

    Aí, na hora de gerar o relatório, você cria um List dessa classe (List<SuaClasse>), carrega a lista com os dados do grid e passa essa lista para o seu relatório dessa forma:

    reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("NomeDoSeuDataSource", suaLista));

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    terça-feira, 8 de novembro de 2016 04:17
    Moderador
  • Olá novamente Alexandre!

    Só para complementar, você pode seguir a mesma ideia que eu utilizei neste artigo aqui (só ignorando a parte em que eu pego os dados do banco de dados):

    Gerando relatórios do Report Viewer com Entity Framework

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    terça-feira, 8 de novembro de 2016 04:19
    Moderador
  • Olá André, boa tarde!

    Maravilha, é exatamente o que preciso !

    quando eu definia o DataSource estava apontando o banco para ter o DataSet criado,
    ai vendo seus artigos e seu comentário vi que posso criar a classe para referencia-la,

    vou fazer dessa forma que você me passou,
    terminando de implementar aqui te dou um feedback do resultado !

    Obrigado pela ajuda...
    terça-feira, 8 de novembro de 2016 19:43
  • Olá André, 
    Boa tarde!
    Obrigado pela ajuda
    com código e com os artigos do site,

    consegui reproduzir os exemplos inclusive com parâmetros.

    sexta-feira, 18 de novembro de 2016 19:17
  • Maravilha, Alexandre! Fico feliz que tenha funcionado! Qualquer coisa, estamos aí.. :)

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    quarta-feira, 23 de novembro de 2016 11:41
    Moderador