Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá! Boa noite! Meu nome é José Carlos.Estou desenvolvendo um relatórios de dados alfanuméricos utilizando o componente reportviewer, a linguagem C# e VisualStudio 2008. Para exibir os dados no relatório criei um DataSet que realiza um select que faz um join em algumas tabelas e retorna algumas funções de agregação(Count,Max). O problema que está acontecendo é que ao chamar a página de exibição do relatório(PrintPreview),o valor que esta vindo dos 2 counts esta vindo zerado. Eu testei o select na ferramenta de consulta e trouxe dados do banco normalmente. As tabelas estão populadas e está retornando valores nos counts. Se alguém puder me ajudar fico agradecido. Seguem os códigos que utilizei.
Consulta usada para construir o DataSet:
SELECT DISTINCT im.cod_municipio, im.cod_macroarea, im.cod_pis, im.cod_pif, im.cod_quadra, COUNT(im.cod_quadra) AS DIGIT_INI, MAX
((SELECT COUNT(pg.cod_quadra)
FROM pgo_unidade_24 pg
WHERE pg.cod_municipio = im.cod_municipio AND
pg.cod_macroarea = im.cod_macroarea AND
pg.cod_pis = im.cod_pis AND
pg.cod_pif = im.cod_pif AND
pg.cod_quadra = im.cod_quadra)) AS TOTAL_UNID
FROM tab_imovel im
GROUP BY im.cod_municipio, im.cod_macroarea, im.cod_pis, im.cod_pif, im.cod_quadra
ORDER BY im.cod_municipio, im.cod_macroarea, im.cod_pis, im.cod_pif, im.cod_quadra
[b]Código da página de PrinPreview:[/b]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OracleClient;
using Microsoft.Reporting.WebForms;
using System.Configuration;
using System.Drawing;
namespace Relatórios_ReportViewer.ReportViewer
{
public partial class WfmTotalUnidadesDigi : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Int32 municipio = Convert.ToInt32(Request["municipio"]);
Int32 macroarea = Convert.ToInt32(Request["macroarea"]);
Int32 pis = Convert.ToInt32(Request["pis"]);
Int32 pif = Convert.ToInt32(Request["pif"]);
Int32 quadra = Convert.ToInt32(Request["quadra"]);
string nome_relatorio = (Request["nome_relatorio"]);
ListaUnidades(municipio, macroarea, pis, pif, quadra, nome_relatorio);
}
private void ListaUnidades(int municipio, int macroarea, int pis, int pif, int quadra, string nome_relatorio)
{
//Referencia a String de Conexão no Web.Config...
string ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
OracleConnection oConn = new OracleConnection(ConnectionString);
DataTable dtDigitInic = new DataTable();
if (quadra != 0)
{
try
{
rv.LocalReport.ReportPath = Server.MapPath("~/ReportViewer/TotalUnidadesDigi.rdlc");
oConn.Open();
//this.ContactTableAdapter.fill(this.
//rv.LocalReport.SubreportProcessing,AddressOF SubRelat
OracleCommand cmd = new OracleCommand(@"
SELECT im.cod_municipio,
im.cod_macroarea,
im.cod_pis,
im.cod_pif,
im.cod_quadra,
im.cod_quadra
FROM
pgo_unidade_24 pg,tab_imovel im
where
pg.cod_municipio = im.cod_municipio AND
pg.cod_macroarea = im.cod_macroarea AND
pg.cod_pis = im.cod_pis AND
pg.cod_pif = im.cod_pif AND
pg.cod_quadra = im.cod_quadra AND
pg.cod_lote = im.cod_lote AND
pg.cod_edificacao = im.cod_edificacao AND
pg.cod_unidade = im.cod_unidade AND
pg.municipio = :Municipio AND
pg.cod_macroarea = :Macroarea AND
pg.cod_pis = :Pis AND
pg.cod_pif = :Pif AND
pg.cod_quadra = :Quadra
order by
im.cod_municipio,
im.cod_macroarea,
im.cod_pis,
im.cod_pif,
im.cod_quadra
", oConn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new OracleParameter("Municipio", OracleType.Char)).Value = municipio;
cmd.Parameters.Add(new OracleParameter("Macroarea", OracleType.Char)).Value = macroarea;
cmd.Parameters.Add(new OracleParameter("Pis", OracleType.Char)).Value = pis;
cmd.Parameters.Add(new OracleParameter("Pif", OracleType.Char)).Value = pif;
cmd.Parameters.Add(new OracleParameter("Quadra", OracleType.Char)).Value = quadra;
OracleDataReader drDigitInic = cmd.ExecuteReader(Commandbehavior.CloseConnection);
dtDigitInic.Load(drDigitInic);
ReportDataSource myReport = new ReportDataSource("consulta", dtDigitInic);
rv.LocalReport.DataSources.Add(myReport);
///* Instanciando um SubRelatório */
//ReportDataSource mySubReport = new ReportDataSource("SubRelat", dtDigitInic);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
finally
{
if (oConn != null)
{
oConn.Close();
oConn.Dispose();
}
if (dtDigitInic != null)
{
dtDigitInic.Dispose();
}
}
}
if (quadra == 0)
{
try
{
rv.LocalReport.ReportPath = Server.MapPath("~/ReportViewer/TotalUnidadesDigi.rdlc");
oConn.Open();
OracleCommand cmd = new OracleCommand(@"
SELECT im.cod_municipio,
im.cod_macroarea,
im.cod_pis,
im.cod_pif,
im.cod_quadra
FROM
pgo_unidade_24 pg,tab_imovel im
where
pg.cod_municipio = im.cod_municipio AND
pg.cod_macroarea = im.cod_macroarea AND
pg.cod_pis = im.cod_pis AND
pg.cod_pif = im.cod_pif AND
pg.cod_quadra = im.cod_quadra AND
pg.cod_lote = im.cod_lote AND
pg.cod_edificacao = im.cod_edificacao AND
pg.cod_unidade = im.cod_unidade AND
pg.cod_municipio = :Municipio AND
pg.cod_macroarea = :Macroarea AND
pg.cod_pis = :Pis AND
pg.cod_pif = :Pif
order by
im.cod_municipio,
im.cod_macroarea,
im.cod_pis,
im.cod_pif,
im.cod_quadra",oConn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new OracleParameter("Municipio", OracleType.Char)).Value = municipio;
cmd.Parameters.Add(new OracleParameter("Macroarea", OracleType.Char)).Value = macroarea;
cmd.Parameters.Add(new OracleParameter("Pis", OracleType.Char)).Value = pis;
cmd.Parameters.Add(new OracleParameter("Pif", OracleType.Char)).Value = pif;
//cmd.Parameters.Add(new OracleParameter("Quadra", OracleType.Char)).Value = quadra;
OracleDataReader drDigitInic = cmd.ExecuteReader(Commandbehavior.CloseConnection);
dtDigitInic.Load(drDigitInic);
ReportDataSource myReport = new ReportDataSource("consulta",dtDigitInic);
rv.LocalReport.DataSources.Add(myReport);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
}
finally
{
if (oConn != null)
{
oConn.Close();
oConn.Dispose();
}
if (dtDigitInic != null)
{
dtDigitInic.Dispose();
}
}
}
}
}
}
Jose Carlos Motta, seja bem vindo ao Fórum iMasters, conheça nossas regras: Regras do Fórum
Você ja debugou para ver se os datasets estão sendo alimentados corretamente? Temos duas etapas, ver se os DataSet não estão sendo alimentados corretamente e ver se estão e o problema esta no crystal.
Abraços...