Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou te enviando esta mensagem pois vi o seu post sobre conexão ao banco e no meu caso não sei mais como resolver.
No page load é carregado o procedimento de ConfigureCrystalReports para que possa ser possível que eu retire a "droga" do pedido de senha quando executo o relatório.
Tudo funciona, inclusive a passagem de parametros implementada na rotina ReportParameter().
O meu problema é que a cada vez que eu abro o relatório ou quando eu clico no meu botão para realizar o filtro uma nova conexão no banco é criada.
O que eu posso fazer para que seja aberta apenas uma conexão no crystal reports?
// ==== Componentes ====
// ----------------------------------------------------------
Relatorio.aspx com (crystalreportviewer csRelatorio, texbox textbox1 e button button1)
Relatorio.rpt
// === FONTE ====
// -----------------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ConfigureCrystalReports();
}
}
public void ConfigureCrystalReports()
{
string reportPath = Server.MapPath("MeuRelatorio.rpt");
rpt.Load(reportPath);
//ConnectionInfo myConnectionInfo = new ConnectionInfo();
myConnectionInfo.ServerName = "10.10.10.10";
myConnectionInfo.DatabaseName = "DATABASE";
myConnectionInfo.UserID = "NomedoUsuario";
myConnectionInfo.Password = "Senha";
SetDBLogonForReport(myConnectionInfo, rpt);
csRelatorioViaturas.ReportSource = rpt; //Atribuir a fonte do relatorio
ReportParameter(); //Passar os parametros
}
// Setar o logon no relatório
private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument ArquivoReport)
{
Tables tables = ArquivoReport.Database.Tables;
foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
{
TableLogOnInfo tableLogonInfo = table.LogOnInfo;
tableLogonInfo.ConnectionInfo = connectionInfo;
table.ApplyLogOnInfo(tableLogonInfo);
}
}
// Atribuir parametros ao relatório
private void ReportParameter()
{
csRelatorio.RefreshReport();
ParameterFields paramFields = new ParameterFields();
ParameterField pfOcorrencia = new ParameterField();
pfOcorrencia.ParameterFieldName = "Ocorrência"; //Nome do param no rel
ParameterDiscreteValue dcOcorrencia = new ParameterDiscreteValue();
dcOcorrencia.Value = int.Parse(TextBox1.Text);
pfOcorrencia.CurrentValues.Add(dcOcorrencia);
paramFields.Add(pfOcorrencia);
csRelatorio.ParameterFieldInfo = paramFields;
}
// Chamada do botão para filtrar o relatório
protected void Button1_Click(object sender, EventArgs e)
{
csRelatorioViaturas.DataBind();
ReportParameter();
}Carregando comentários...