Fazer uma PerguntaFazer uma Pergunta
 

RespondidoRelatório

  • terça-feira, 3 de novembro de 2009 10:48Palini Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Olá pessoal, construi uma aplicação para uma loja de materiais de construção, mas como sou da área de engenharia, é a primeira vez que me aventuro em uma aplicação comercial, e estou com muita dificuldade na hora de gerar um relátório, Tenho um Form que é a janela de venda do sistema, após encerrar a venda, preciso imprimir a folha de pedido, com os itens da compra, dados do cliente, etc. As informações estão em tabelas distintas no banco de dados, porém, todos os dados que preciso no Relatório a ser impresso, ja estão no Form, o que eu preciso é básico, pegar esses dados que estão no Form, e gerar um relatório com eles. Alguém pode me dar uma explicação de como fazer isso, ou até mesmo me direcionar a um exemplo? ja li sobre o assunto em alguns sites da internet, mas ainda estou meio confuso. Obrigado

Respostas

  • terça-feira, 3 de novembro de 2009 11:44Ari C. Raimundo Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Palini,

    Você pode utilizar o Crystal Reports para criar relatórios. Segue abaixo alguns links de ajuda:

    Crystal Reports For Visual Studio 2005 Walkthroughs
    http://www.businessobjects.com/global/pdf/dev_zone/VS2005_Walkthroughs.pdf

    Creating Professional Reports using Crystal Report for Visual Studio.NET (Part 1)
    http://aspalliance.com/215_Creating_Professional_Reports_using_Crystal_Report_for_Visual_StudioNET_Part_1.all

    Crystal Reports for Visual Studio 2005 - Tutorials and Sample Code
    http://msdn.microsoft.com/en-us/library/ms227881%28VS.80%29.aspx

    Att.

    Ari C. Raimundo

  • terça-feira, 3 de novembro de 2009 23:24MárcioLima Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     RespondidoContém Código
    Olá Palini,

    Outra forma, no braço, seria como no exemplo:

            //using System.Drawing.Printing;
    
            private void buttonPrint_Click(object sender, EventArgs e)
            {
                PrintDocument docto = new PrintDocument(); 
                docto.PrintPage += new PrintPageEventHandler(this.docto_PrintPage);
                docto.Print();
            }
    
            private void docto_PrintPage(object sender, PrintPageEventArgs ev)
            {
                myFont1 = new Font("Arial", 10);
                ev.Graphics.DrawString("Título do Relatório",
                    myFont1, Brushes.Black, 30, 20);
                // na linha acima, 30 é a posição Horizontal e 25 a posição Vertical
                ev.Graphics.DrawString("Nome: " + "campo_com_nome",
                   myFont1, Brushes.Black, 30, 50);
                ev.Graphics.DrawString("Endereço: " + "campo_com_endereço",
                   myFont1, Brushes.Black, 250, 50);
                ev.Graphics.DrawString("Produto: " + "campo_com_produto",
                   myFont1, Brushes.Black, 30, 80);
                ev.Graphics.DrawString("Quant: " + "campo_com_quantidade",
                   myFont1, Brushes.Black, 250, 80);
                ev.HasMorePages = false;
            }
    
    


    Saudações

    Márcio Lima
  • quarta-feira, 4 de novembro de 2009 12:31Thiago Piccoli da Silva Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Palini, bom dia!

    Segue o link: http://www.msdnbrasil.com.br/microsoft.mediacenter/Default.aspx_x_TYPE_x_Videos.aspx

    Desça um pouco, você vera 3 videos completos de como utilizar Report Viewer e Crystal Report mostrando a comparação de criar relatório entre as 2 ferramentas. Esses exemplos são para ASP.NET (apenas não me recordo se é em VB ou C#), mais é muito simples implementa-los em WinApp, tenho certeza que vai esclarecer muitas duvidas sobre relatórios.

    E sim, você está correto, faz um DataSet, popula ele com as informações desejadas, passa ele para o relatório e chama o relatório.

    Att.
    TPS

  • quarta-feira, 4 de novembro de 2009 13:53Thiago Piccoli da Silva Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido

    Palini,

    quando criei o DataSet não fiz aquela conexão automatica com DataAdapter... Crie tabelas mualmente (dentro do DataSet)...

    Depois para popula-las com dados da tela, eu fiz assim em Report Viewer:

    1-) Criei uma tabela (DataTable) e suas repectivas colunas e populei elas com os dados da tela.

    2-) Depois apenas passei a tabela como parametro na hora de criar o ReportDataSource:

    ReportDataSource rds = new ReportDataSource("nome", tabela);
    ReportViewer1.LocalReport.DataSources.Add(rds);



    Você pode fazer isso utilizando mais de uma tabela no mesmo relatório, exemplo: "Cliente", "Pedido de Venda", "Itens do Pedido", etc.

    Dai é só repetir o processo... eu faço isso no caso de aparecer um relatório antes mesmo de finalziar uma operação....

    Espero que te ajude, caso não consiga é só postar.

    Att.
    TPS

  • quarta-feira, 4 de novembro de 2009 22:04MárcioLima Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     RespondidoContém Código
    Olá Palini,

    Eis um exemplo para vários itens vendidos:

            //using System.Drawing.Printing;
    
            private void buttonPrint_Click(object sender, EventArgs e)
            {
                PrintDocument docto = new PrintDocument(); 
                docto.PrintPage += new PrintPageEventHandler(this.docto_PrintPage);
                docto.Print();
            }
    
            private void docto_PrintPage(object sender, PrintPageEventArgs ev)
            {
                int qtd_Pedido; 
                myFont1 = new Font("Arial", 10);
                ev.Graphics.DrawString("Título do Relatório",
                    myFont1, Brushes.Black, 30, 20);
                // na linha acima, 30 é a posição Horizontal e 20 a posição Vertical
                ev.Graphics.DrawString("Nome: " + "campo_com_nome",
                   myFont1, Brushes.Black, 30, 50);
                ev.Graphics.DrawString("Endereço: " + "campo_com_endereço",
                   myFont1, Brushes.Black, 250, 50);
                ev.Graphics.DrawString("Código   Produto          Quantid.     Valor    Total",
                   myFont1, Brushes.Black, 30, 80);
                int posVert = 110;
                for (int idx = 0; idx < qtd_Pedido; idx++)
                {
                    ev.Graphics.DrawString("campo_com_código[idx]",
                       myFont1, Brushes.Black, 30, posVert);
                    ev.Graphics.DrawString("campo_com_produto[idx]",
                       myFont1, Brushes.Black, 70, posVert);
                    ev.Graphics.DrawString("campo_com_quantidade[idx]",
                       myFont1, Brushes.Black, 130, posVert);
                    ev.Graphics.DrawString("campo_com_valor[idx]",
                       myFont1, Brushes.Black, 170, posVert);
                    ev.Graphics.DrawString("campo_com_total[idx]",
                       myFont1, Brushes.Black, 240, posVert);
                    posVert += 30;
                }
                ev.HasMorePages = false;
            }
    
    


    Saudações

    Márcio Lima
  • quarta-feira, 4 de novembro de 2009 22:40ijaraujo Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Olá Palini,
    Veja o link abaixo, de repente um pdf seria interessante.

    http://www.linhadecodigo.com.br/Artigo.aspx?id=2582


    Isaias Jatobá
  • quinta-feira, 5 de novembro de 2009 10:51Ari C. Raimundo Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Palini,

    Um dos links que eu lhe passei (Crystal Reports For Visual Studio 2005 Walkthroughs ) tem exemplos de como fazer isso.

    Att.

    Ari C. Raimundo

Todas as Respostas

  • terça-feira, 3 de novembro de 2009 11:43Felipe Marciano Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Crie um data set e com base em no dataset use o componente reportview.
    Felipe Marciano Msn:fmrap@hotmail.com
  • terça-feira, 3 de novembro de 2009 11:44Ari C. Raimundo Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Palini,

    Você pode utilizar o Crystal Reports para criar relatórios. Segue abaixo alguns links de ajuda:

    Crystal Reports For Visual Studio 2005 Walkthroughs
    http://www.businessobjects.com/global/pdf/dev_zone/VS2005_Walkthroughs.pdf

    Creating Professional Reports using Crystal Report for Visual Studio.NET (Part 1)
    http://aspalliance.com/215_Creating_Professional_Reports_using_Crystal_Report_for_Visual_StudioNET_Part_1.all

    Crystal Reports for Visual Studio 2005 - Tutorials and Sample Code
    http://msdn.microsoft.com/en-us/library/ms227881%28VS.80%29.aspx

    Att.

    Ari C. Raimundo

  • terça-feira, 3 de novembro de 2009 23:24MárcioLima Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     RespondidoContém Código
    Olá Palini,

    Outra forma, no braço, seria como no exemplo:

            //using System.Drawing.Printing;
    
            private void buttonPrint_Click(object sender, EventArgs e)
            {
                PrintDocument docto = new PrintDocument(); 
                docto.PrintPage += new PrintPageEventHandler(this.docto_PrintPage);
                docto.Print();
            }
    
            private void docto_PrintPage(object sender, PrintPageEventArgs ev)
            {
                myFont1 = new Font("Arial", 10);
                ev.Graphics.DrawString("Título do Relatório",
                    myFont1, Brushes.Black, 30, 20);
                // na linha acima, 30 é a posição Horizontal e 25 a posição Vertical
                ev.Graphics.DrawString("Nome: " + "campo_com_nome",
                   myFont1, Brushes.Black, 30, 50);
                ev.Graphics.DrawString("Endereço: " + "campo_com_endereço",
                   myFont1, Brushes.Black, 250, 50);
                ev.Graphics.DrawString("Produto: " + "campo_com_produto",
                   myFont1, Brushes.Black, 30, 80);
                ev.Graphics.DrawString("Quant: " + "campo_com_quantidade",
                   myFont1, Brushes.Black, 250, 80);
                ev.HasMorePages = false;
            }
    
    


    Saudações

    Márcio Lima
  • terça-feira, 3 de novembro de 2009 23:38Palini Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Oá Márcio, dessa forma eu consigo azer tranquilo, mas tem um problema, este é será um relatório de venda, e precisarei adicionar nele os itens da venda, neste caso, não tenho um numero fixo de entradas, em cada relatório terei uma quantidade diferente de produtos a serem impressos, tem como fazer isso dessa forma?
  • quarta-feira, 4 de novembro de 2009 11:53Palini Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Pessoal, veja se estou certo, pelo que li até agora, para gerar um relatório que imprima os dados que tenho em um form tenho que seguir os seguintes passos: Criar um DataSet, Carregar este DataSet com os dados contidos nos TextBox do Form, Gerar um report no CrystalReport com base neste DataSet, exibir o relátório em um CrystalReportViewer para o usuario quando ele cricar em Imprimir. É isso mesmo ou estou errado? alguém tem exemplos do como posso fazer esses passos? principalmente carregar o dataset com o conteudo dos textbox e depois atribuir este dataset ao report.
  • quarta-feira, 4 de novembro de 2009 12:31Thiago Piccoli da Silva Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Palini, bom dia!

    Segue o link: http://www.msdnbrasil.com.br/microsoft.mediacenter/Default.aspx_x_TYPE_x_Videos.aspx

    Desça um pouco, você vera 3 videos completos de como utilizar Report Viewer e Crystal Report mostrando a comparação de criar relatório entre as 2 ferramentas. Esses exemplos são para ASP.NET (apenas não me recordo se é em VB ou C#), mais é muito simples implementa-los em WinApp, tenho certeza que vai esclarecer muitas duvidas sobre relatórios.

    E sim, você está correto, faz um DataSet, popula ele com as informações desejadas, passa ele para o relatório e chama o relatório.

    Att.
    TPS

  • quarta-feira, 4 de novembro de 2009 13:12Palini Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Olá Thiago, ja baixei e assisti esses videos, me ajudaram bastante, mas ainda to com algumas duvidas, a principal delas, é como carregar esse DataSet com as informações que estão no form?
  • quarta-feira, 4 de novembro de 2009 13:53Thiago Piccoli da Silva Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido

    Palini,

    quando criei o DataSet não fiz aquela conexão automatica com DataAdapter... Crie tabelas mualmente (dentro do DataSet)...

    Depois para popula-las com dados da tela, eu fiz assim em Report Viewer:

    1-) Criei uma tabela (DataTable) e suas repectivas colunas e populei elas com os dados da tela.

    2-) Depois apenas passei a tabela como parametro na hora de criar o ReportDataSource:

    ReportDataSource rds = new ReportDataSource("nome", tabela);
    ReportViewer1.LocalReport.DataSources.Add(rds);



    Você pode fazer isso utilizando mais de uma tabela no mesmo relatório, exemplo: "Cliente", "Pedido de Venda", "Itens do Pedido", etc.

    Dai é só repetir o processo... eu faço isso no caso de aparecer um relatório antes mesmo de finalziar uma operação....

    Espero que te ajude, caso não consiga é só postar.

    Att.
    TPS

  • quarta-feira, 4 de novembro de 2009 22:04MárcioLima Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     RespondidoContém Código
    Olá Palini,

    Eis um exemplo para vários itens vendidos:

            //using System.Drawing.Printing;
    
            private void buttonPrint_Click(object sender, EventArgs e)
            {
                PrintDocument docto = new PrintDocument(); 
                docto.PrintPage += new PrintPageEventHandler(this.docto_PrintPage);
                docto.Print();
            }
    
            private void docto_PrintPage(object sender, PrintPageEventArgs ev)
            {
                int qtd_Pedido; 
                myFont1 = new Font("Arial", 10);
                ev.Graphics.DrawString("Título do Relatório",
                    myFont1, Brushes.Black, 30, 20);
                // na linha acima, 30 é a posição Horizontal e 20 a posição Vertical
                ev.Graphics.DrawString("Nome: " + "campo_com_nome",
                   myFont1, Brushes.Black, 30, 50);
                ev.Graphics.DrawString("Endereço: " + "campo_com_endereço",
                   myFont1, Brushes.Black, 250, 50);
                ev.Graphics.DrawString("Código   Produto          Quantid.     Valor    Total",
                   myFont1, Brushes.Black, 30, 80);
                int posVert = 110;
                for (int idx = 0; idx < qtd_Pedido; idx++)
                {
                    ev.Graphics.DrawString("campo_com_código[idx]",
                       myFont1, Brushes.Black, 30, posVert);
                    ev.Graphics.DrawString("campo_com_produto[idx]",
                       myFont1, Brushes.Black, 70, posVert);
                    ev.Graphics.DrawString("campo_com_quantidade[idx]",
                       myFont1, Brushes.Black, 130, posVert);
                    ev.Graphics.DrawString("campo_com_valor[idx]",
                       myFont1, Brushes.Black, 170, posVert);
                    ev.Graphics.DrawString("campo_com_total[idx]",
                       myFont1, Brushes.Black, 240, posVert);
                    posVert += 30;
                }
                ev.HasMorePages = false;
            }
    
    


    Saudações

    Márcio Lima
  • quarta-feira, 4 de novembro de 2009 22:40ijaraujo Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Olá Palini,
    Veja o link abaixo, de repente um pdf seria interessante.

    http://www.linhadecodigo.com.br/Artigo.aspx?id=2582


    Isaias Jatobá
  • quinta-feira, 5 de novembro de 2009 10:51Ari C. Raimundo Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     Respondido
    Palini,

    Um dos links que eu lhe passei (Crystal Reports For Visual Studio 2005 Walkthroughs ) tem exemplos de como fazer isso.

    Att.

    Ari C. Raimundo
  • quinta-feira, 5 de novembro de 2009 12:58Palini Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Olá pessoal, com todas as informações que vcs me passaram, ja vai dar pra fazer, caso ocorra algum problema, volto a postar aqui.
    Obrigado
    Abraços
  • quinta-feira, 5 de novembro de 2009 22:46Palini Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Bom pessoal, ja consegui carregar o meu DataSet com os dados do form e do banco em acces, criei o relatório, criei o forma com o componente CrystalReportViewer, mas agora não to conseguindo carregar o relatório. O forma e o CrystalReportViewer aparecem vazios. alguém pode me ajudar nisso?
  • sexta-feira, 6 de novembro de 2009 18:04Palini Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Continua faltando só essa parte, alguém tem algum exemplo?