Relató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
- 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
- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:49
- 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- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:49
- 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- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:32
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- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:32
- 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- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:32
- Olá Palini,
Veja o link abaixo, de repente um pdf seria interessante.
http://www.linhadecodigo.com.br/Artigo.aspx?id=2582
Isaias Jatobá- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:32
- 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- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:32
Todas as Respostas
- Crie um data set e com base em no dataset use o componente reportview.
Felipe Marciano Msn:fmrap@hotmail.com - 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
- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:49
- 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- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:49
- 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?
- 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.
- 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- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:32
- 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?
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- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:32
- 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- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:32
- Olá Palini,
Veja o link abaixo, de repente um pdf seria interessante.
http://www.linhadecodigo.com.br/Artigo.aspx?id=2582
Isaias Jatobá- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:32
- 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- Marcado como RespostaHarley AraujoMSFT, Moderadorquinta-feira, 5 de novembro de 2009 13:32
- 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 - 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?
Continua faltando só essa parte, alguém tem algum exemplo?


