Consultoria na Montagem de Relatóario com Gráficos
Solicito consultoria em como proceder para fazer uma consulta parametrizada para gerar um relatório e um Grafico onde o usuario devera informar um período e escolher o código de um cliente e um produto especifico numa DropDownlist e partindo destes dados gerar um relatório e um grafico com os resultados de um determinado produto, de um cliente no periodo determinado.
select cli.codcli, cli.nome, pr.codprod,pr.descricao, ped.mes(dataped), count(codprod)
from PEDIDOS PED
inner join CLIENTES CLI on CLI.codcli = PED.codcli
inner join ITENS IT on IT.numpedido = PED.numpedido
inner join PRODUTOS PR on PR.codprod = IT.codprod
where
cli.codcli = @codigo
and ped.dataped between @dataini,@datafim
and pr.CODPROD = @codprod
group by cli.codcli, cli.nome, pr.codprod,pr.descricao, ped.mes(dataped)
order by ped.mes(dataped)
Exemplo do relatório e consequentemente os dados para o grafico de barra COD/NOME CLIENTE COD/DESC PRODUTO MES Qtde
001 Cliente 1 100 PRODUTO 100 01 10
001 Cliente 1 100 PRODUTO 100 02 15
001 Cliente 1 100 PRODUTO 100 03 20
001 Cliente 1 100 PRODUTO 100 04 30
001 Cliente 1 100 PRODUTO 100 05 25
001 Cliente 1 100 PRODUTO 100 06 20
001 Cliente 1 100 PRODUTO 100 07 40
001 Cliente 1 100 PRODUTO 100 08 15
001 Cliente 1 100 PRODUTO 100 09 20
001 Cliente 1 100 PRODUTO 100 10 30
001 Cliente 1 100 PRODUTO 100 11 45
001 Cliente 1 100 PRODUTO 100 12 50 Atte
Sérgio
from PEDIDOS PED
inner join CLIENTES CLI on CLI.codcli = PED.codcli
inner join ITENS IT on IT.numpedido = PED.numpedido
inner join PRODUTOS PR on PR.codprod = IT.codprod
where
cli.codcli = @codigo
and ped.dataped between @dataini,@datafim
and pr.CODPROD = @codprod
group by cli.codcli, cli.nome, pr.codprod,pr.descricao, ped.mes(dataped)
order by ped.mes(dataped)
Exemplo do relatório e consequentemente os dados para o grafico de barra COD/NOME CLIENTE COD/DESC PRODUTO MES Qtde
001 Cliente 1 100 PRODUTO 100 01 10
001 Cliente 1 100 PRODUTO 100 02 15
001 Cliente 1 100 PRODUTO 100 03 20
001 Cliente 1 100 PRODUTO 100 04 30
001 Cliente 1 100 PRODUTO 100 05 25
001 Cliente 1 100 PRODUTO 100 06 20
001 Cliente 1 100 PRODUTO 100 07 40
001 Cliente 1 100 PRODUTO 100 08 15
001 Cliente 1 100 PRODUTO 100 09 20
001 Cliente 1 100 PRODUTO 100 10 30
001 Cliente 1 100 PRODUTO 100 11 45
001 Cliente 1 100 PRODUTO 100 12 50 Atte
Sérgio
Sergio Santos
Curtidas 0
Respostas
[devmedia .net]
02/01/2009
Opa, blz Sérgio ?
Cara tem um curso completo sobre Report Viewer aqui na DevMedia..
Veja o módulo - Módulo II - Report Viewer do curso: https://www.devmedia.com.br/cursos/listcurso.asp?curso=70
Lembrando que o Report Viewer é mais interessante por ser mais simples e ser completo...
Caso não tenha acesso ao curso me fale..
Aguardo seu contato..
Grande abraço
Carlos Jr
GOSTEI 0
Sergio Santos
02/01/2009
Carlos
Já vi este video, mas ele não esclareceu a minha duvida.
Vou trabalhar com 3 parametros e ainda preciso ter a opção de Imprimir o relatório ou gerar o gráfico, baseado na mesma consulta.
Continuo aguardando a sua ajuda!
[]s
Sérgio e Feliz Ano novo pra vc!
GOSTEI 0
[devmedia .net]
02/01/2009
Caro Sérgio,
essa curso explica exatamente o que você está precisando..
Como enviar parâmetros, como imprimir os relatórios que já é nativo do Report Viewer, gerar gráficos.. e etc...
Se ela não te atende, acho que não entendi sua dúvida...
Poderia explicar melhor ?
No aguardo..
Abraços
Carlos Jr
GOSTEI 0
Sergio Santos
02/01/2009
Prezado Carlos Jr
Já vi o video do Luciano Pimenta e neste video ele utiliza os terriveis wizards.
Tomei trauma de wizards...rs.rs Segui o seu conselho.
A quetão é que para a miha consulta terei 4 parametros (Cod.Cliente, Cod. Produto, DataInicial e DataFinal), e preciso passar estes parametros para o comando SQL no ObjectSource.
No exemplo que ele utiliza, ele faz um passagem de parametro onde escolhe o tipo de controle (ControlID), que é um textBox e pega o seu conteudo, mas tudo isto via wizard.
No Exemplo dele, mesmo sendo wizard da maneira que ele faz eu não saberia passar as datas para a consulta. Acho que teria que trata-las antes, não sei.
Espero que tenha ficado mais claro.
Desde já agradeço a atenção!
[]s
Sérgio
GOSTEI 0
[devmedia .net]
02/01/2009
Opa, blz Sérgio !?
Agora sim entendi o que deseja,
bom eu não vou lhe ensinar como adicionar o relatório pois isso a video aula ensina,
vou direto aos parâmetros ok !?
Adição do relatório é simples, somente arrastar o relatório para uma página aspx e montar o relatório da mesma maneira como mostrado, ok !?
Os parâmetros é o seguinte...
1 - Vamos adicionar primeiro nosso Report Viewer para visualização dos relatórios em sua página ASP.NET: 2 - Agora basta configurar o Report Viewer para exibir o relatório escolhido, passando os parâmetros solicitados por ele. Abaixo segue o código comentado para exeutar a tarefa:
//Informa o modo de execução do relatório (Local ou Remoto)
Relatorios.ProcessingMode = ProcessingMode.Remote; //Informar respectivamente as URLs do Servidor Report Service e do Relatório a ser executado
Relatorios.ServerReport.ReportServerUrl = new Uri(“http://servidorrelatorio/reportserver”);
Relatorios.ServerReport.ReportPath = “/Empresa/Sistema/Relatorio”;
//Vamos criar a atribuir valores para os parametros
ReportParameter[] reportParams = newReportParameter[2];
reportParams[0] = new Microsoft.Reporting.WebForms.ReportParameter(“@Parametro1″, “valor1″);
reportParams[1] = new Microsoft.Reporting.WebForms.ReportParameter(“@Parametro2″, “valor2″);
//Atribumos os parametros criados para o relatorio
Relatorios.ServerReport.SetParameters(reportParams);
//Desabilita o barra de parametros do Report viewer
Relatorios.ShowParameterPrompts = false;
//Atualiza o relatorio para exibição
Relatorios.ServerReport.Refresh(); Caso não tenha o ReportViewer instalado baixe aqui:
Download do ReportView:
http://msdn.microsoft.com/vstudio/express/vwd/download/default.aspx Para geração dos gráficos funciona da mesma maneira, você arrasta o componente Chart para o relatório e passa os parâmetros da mesma maneirca como em um realtório e da mesma maneira que é exibido na video aula. Segue abaixo um tutorial de como criar os gráficos... Gráfico de barras simples mostrando os Dez produtos mais caros. Para isso eu vou usar o banco de dados Northwind.mdf e a stored procedure : Ten Most Expensives Products. Crie um novo site web no menu File-> New Web Site, usando o template ASP .NEt Web Site, com o nome ReportGraph1; A seguir selecione a página Default.aspx e a coloque no modo Design. Agora a partir da ToolBox , guia Data, selecione e arraste para a página o componente ReportViewer; Na barra ReportViewer Tasks clique no link - Design a new report para iniciar a criação de um novo relatório; No menu Data, selecione Show Data Sources e a seguir clique no link - Add New Data Source - para incluir uma fonte de dados em nosso projeto; O assistente de configuração irá surgir; Na janela Choose your Data Connection , selecione uma conexão com o banco de dados Northwind.mdf e clique em Next>; Na próxima janela aceite nome padrão dado a string de conexão e clique no botão Next> deixando marcado a opção para salvar a string de conexão no web.config; Na janela Choose a Command Type marque a opção : Use existing stored procedures e clique no botão Next>; Na janela - Bind Commands to Existing Stored Procedures - caixa Select , escolha a stored procedure : Ten Most Expensive Products e clique em Next>; A seguir clique no botão Next> e para encerrar em Finish; Ao término desta etapa você verá o dataset criado exibindo os campos - UnitPrice e TenMostExpensiveProducts, a ToolBox do Report e os arquivos do projeto conforme figura abaixo; Agora vamos arrastar o componente Chart da ToolBox e soltar no relatório. Você verá o componente exibindo um modelo gráfico. Na janela Data Sources selecione o campo UnitPrice e arraste e solte na seção - Drop data fields here; Na sequência arraste e solte o campo TenMostExpensiveProducts na seção - Drop category fields here; Clique com o botão direito sobre o gráfico e selecione a opção: Properties; Será aberta a janela Chart Properties. Vamos efetuar as seguintes configurações: Na guia General : - Defina o nome do gráfico - netChart;
- Selecione a Pallete : Default;
- Informe o título do gráfico: Dez Produtos mais caros;
- Selecione o tipo de gráfico: Column Chart; Nota: Temos diversas opções de gráficos: Barras, Linhas, Pizza, Área
Bolha, etc. Na guia X Axis , informe o título do eixo x : Produtos Na guia Y Axis, informe o título do eixo y : Preço (R$) Na guia Legend desmarque a opção Show Legend. Nas demais guias não vamos alterar nenhum valor. Agora faça alguns ajustes no tamanho do relatório e do componente ReportViewer na página Default.aspx. Selecione o formulário Web Default.aspx e no componente ReportViewer em Choose Report escolha o relatório que criamos chamado : report1.rdlc. Executando o projeto iremos obter a página Default.aspx exibindo o relatório: Vamos agora incrementar o nosso relatório. Que tal exibir na cor azul os produtos com preço acima de R$ 100 e os demais na cor vermelha ? Para isso vamos incluir uma fórmula no relatório da seguinte forma: Selecione o relatório report1.rdlc e clique com o botão direito do mouse sobre o mesmo; Selecione a guia Data e em Values clique no botão Edit; Na janela Edit Chart Value selecione a aba Appearance e clique no botão Series Style...; Na janela Style Properties clique na aba Fill; A seguir clique no botão Fx relacionado a propriedade Color; A seguir defina na janela Edit Expression a expressão abaixo para exibir em azul produtos com preço maior que 100 e o restante em vermelho; Executando novamente o projeto iremos obter a página Default.aspx exibindo o seguinte gráfico: Usar o Report Viewer para criar gráficos é muito simples e ainda podemos aplicar alguns recursos. Sérgio, se mesmo assim não conseguir resolver o problema me avise que eu dou um jeito de explicar melhor. Estou aqui para resolver seu problema e te atender, ok!? Grande Abraço Carlos Jr
1 - Vamos adicionar primeiro nosso Report Viewer para visualização dos relatórios em sua página ASP.NET: 2 - Agora basta configurar o Report Viewer para exibir o relatório escolhido, passando os parâmetros solicitados por ele. Abaixo segue o código comentado para exeutar a tarefa:
//Informa o modo de execução do relatório (Local ou Remoto)
Relatorios.ProcessingMode = ProcessingMode.Remote; //Informar respectivamente as URLs do Servidor Report Service e do Relatório a ser executado
Relatorios.ServerReport.ReportServerUrl = new Uri(“http://servidorrelatorio/reportserver”);
Relatorios.ServerReport.ReportPath = “/Empresa/Sistema/Relatorio”;
//Vamos criar a atribuir valores para os parametros
ReportParameter[] reportParams = newReportParameter[2];
reportParams[0] = new Microsoft.Reporting.WebForms.ReportParameter(“@Parametro1″, “valor1″);
reportParams[1] = new Microsoft.Reporting.WebForms.ReportParameter(“@Parametro2″, “valor2″);
//Atribumos os parametros criados para o relatorio
Relatorios.ServerReport.SetParameters(reportParams);
//Desabilita o barra de parametros do Report viewer
Relatorios.ShowParameterPrompts = false;
//Atualiza o relatorio para exibição
Relatorios.ServerReport.Refresh(); Caso não tenha o ReportViewer instalado baixe aqui:
Download do ReportView:
http://msdn.microsoft.com/vstudio/express/vwd/download/default.aspx Para geração dos gráficos funciona da mesma maneira, você arrasta o componente Chart para o relatório e passa os parâmetros da mesma maneirca como em um realtório e da mesma maneira que é exibido na video aula. Segue abaixo um tutorial de como criar os gráficos... Gráfico de barras simples mostrando os Dez produtos mais caros. Para isso eu vou usar o banco de dados Northwind.mdf e a stored procedure : Ten Most Expensives Products. Crie um novo site web no menu File-> New Web Site, usando o template ASP .NEt Web Site, com o nome ReportGraph1; A seguir selecione a página Default.aspx e a coloque no modo Design. Agora a partir da ToolBox , guia Data, selecione e arraste para a página o componente ReportViewer; Na barra ReportViewer Tasks clique no link - Design a new report para iniciar a criação de um novo relatório; No menu Data, selecione Show Data Sources e a seguir clique no link - Add New Data Source - para incluir uma fonte de dados em nosso projeto; O assistente de configuração irá surgir; Na janela Choose your Data Connection , selecione uma conexão com o banco de dados Northwind.mdf e clique em Next>; Na próxima janela aceite nome padrão dado a string de conexão e clique no botão Next> deixando marcado a opção para salvar a string de conexão no web.config; Na janela Choose a Command Type marque a opção : Use existing stored procedures e clique no botão Next>; Na janela - Bind Commands to Existing Stored Procedures - caixa Select , escolha a stored procedure : Ten Most Expensive Products e clique em Next>; A seguir clique no botão Next> e para encerrar em Finish; Ao término desta etapa você verá o dataset criado exibindo os campos - UnitPrice e TenMostExpensiveProducts, a ToolBox do Report e os arquivos do projeto conforme figura abaixo; Agora vamos arrastar o componente Chart da ToolBox e soltar no relatório. Você verá o componente exibindo um modelo gráfico. Na janela Data Sources selecione o campo UnitPrice e arraste e solte na seção - Drop data fields here; Na sequência arraste e solte o campo TenMostExpensiveProducts na seção - Drop category fields here; Clique com o botão direito sobre o gráfico e selecione a opção: Properties; Será aberta a janela Chart Properties. Vamos efetuar as seguintes configurações: Na guia General : - Defina o nome do gráfico - netChart;
- Selecione a Pallete : Default;
- Informe o título do gráfico: Dez Produtos mais caros;
- Selecione o tipo de gráfico: Column Chart; Nota: Temos diversas opções de gráficos: Barras, Linhas, Pizza, Área
Bolha, etc. Na guia X Axis , informe o título do eixo x : Produtos Na guia Y Axis, informe o título do eixo y : Preço (R$) Na guia Legend desmarque a opção Show Legend. Nas demais guias não vamos alterar nenhum valor. Agora faça alguns ajustes no tamanho do relatório e do componente ReportViewer na página Default.aspx. Selecione o formulário Web Default.aspx e no componente ReportViewer em Choose Report escolha o relatório que criamos chamado : report1.rdlc. Executando o projeto iremos obter a página Default.aspx exibindo o relatório: Vamos agora incrementar o nosso relatório. Que tal exibir na cor azul os produtos com preço acima de R$ 100 e os demais na cor vermelha ? Para isso vamos incluir uma fórmula no relatório da seguinte forma: Selecione o relatório report1.rdlc e clique com o botão direito do mouse sobre o mesmo; Selecione a guia Data e em Values clique no botão Edit; Na janela Edit Chart Value selecione a aba Appearance e clique no botão Series Style...; Na janela Style Properties clique na aba Fill; A seguir clique no botão Fx relacionado a propriedade Color; A seguir defina na janela Edit Expression a expressão abaixo para exibir em azul produtos com preço maior que 100 e o restante em vermelho; Executando novamente o projeto iremos obter a página Default.aspx exibindo o seguinte gráfico: Usar o Report Viewer para criar gráficos é muito simples e ainda podemos aplicar alguns recursos. Sérgio, se mesmo assim não conseguir resolver o problema me avise que eu dou um jeito de explicar melhor. Estou aqui para resolver seu problema e te atender, ok!? Grande Abraço Carlos Jr
GOSTEI 0
[devmedia .net]
02/01/2009
Opa, blz ?
Conseguiu resolver ?
Aguardo um contato seu..
Abraços
Carlos Jr
GOSTEI 0
Sergio Santos
02/01/2009
#ID: 1675 Postado em: 1/7/2009 2:59:15 PM
Prezado Carlos Algumas dúvidas: 1o) Existe alguma maneira de configurar o report Viewer para que o relatório já saia em modo Retrato (Horizontal) qdo for impresso? 2o) Existe alguma maneira de configurar as margens de um relatório? Atte Sérgio
Prezado Carlos Algumas dúvidas: 1o) Existe alguma maneira de configurar o report Viewer para que o relatório já saia em modo Retrato (Horizontal) qdo for impresso? 2o) Existe alguma maneira de configurar as margens de um relatório? Atte Sérgio
GOSTEI 0
[devmedia .net]
02/01/2009
Opa, blz Sérgio.. ?
Para imprimir em Paisagem, é só ajustar o tamanho da página...
Abra o relatório no Report Designer, abra a janela de Propriedades (Properties), e inverta o valor das propriedades Interactive Size e Page Size.
Se não estou enganado, o valor padrão é Largura (Width) "8.5", e Altura (Height) = "11", então é só inverter para Largura (Width) "11", e Altura (Height) = "8.5".
2)
Para alterar as margens e o tamanho do papel no ReportView, eu conheço apenas em tempo de designer.
Minha sugestão:
Para resolver o problema basta diminuir a largura "width" "body" do relatório.
Um exemplo:
Para um relatório configurado para papel A4 (Menu Reports - Report Properties - "aba Layout")
Tamanho da página
Largura: 21 cm
Altura: 29,7 cm
Com margens:
Esquerda 2 cm
Direita 2 cm Largura "real" do relatório "designer" item "body" Largura = Largura da página - Margem Esquerda - Margem Direita Abraços
Carlos Jr
Direita 2 cm Largura "real" do relatório "designer" item "body" Largura = Largura da página - Margem Esquerda - Margem Direita Abraços
Carlos Jr
GOSTEI 0
Sergio Santos
02/01/2009
Carlos
Existe alguma maneira de passar estes parametros para a configuraão da impressora via ReportViewer?
[]s
Sérgio
GOSTEI 0
[devmedia .net]
02/01/2009
Opa, Blz ..
Infelizmente não tem como fazer isso de maneira automática,
pois as configurações de impressões dependem diretamente do software das impressoras,
e são elas que calculam a área de impressão, portatno deve ser feito no momento da impressão,
ow, configurar cada relatório da maneira que deseja que saia, mas isso é no momento de designer.
Abraços
Carlos Jr
GOSTEI 0