Array
(
)

Como configurar logon e utilizar o Crystal Reports com ASP.net e C#

Faustino Júnior
   - 29 mar 2012

Como configurar logon e utilizar o Crystal Reports com ASP.net e C#
Geralmente os desenvolvedores fazem os relatórios direcionados para um banco de dados, mas ao publicar no servidor ou quando o IP do servidor é modificado percebe-se que o relatório necessita de logon para poder ser aberto, o que é bastante desagradável para o usuário, criando uma vulnerabilidade para a aplicação. Para resolver este problema podemos configurar o relatório e a conexão em tempo de execução, para isto basta utilizar os métodos de configuração do crystal reports.
Ao me deparar com estes problemas relacionados e realizar consultas na web e no msdn, utilizei o código abaixo faz a conexão de logon do relatório.
Obs.: O relatório pode ser desenvolvido apontado para qualquer servidor, mas na hora de execução as configurações serão feitas antes da abertura do mesmo.
Como utilizar :
1)
Crie um relatório no crystal reports (Add - New Item - Crystal report).
Informe o nome que no exemplo é relatorio.rpt e salve.
Configure os campos que serão exibidos no relatório e salve.
2)
Crie uma página aspx (Add - New Item - web form).
Informe o nome que no exemplo é RelRelatorio.aspx e salve.
Insira o componente CrystalReportViewer no design da página.
informe a propriedade ID, que no exemplo é csRelatorio.
-- código do reportviewer com a exibição de conexão falsa.
Obs.: não esqueça de por no início < e no final o >
//CR:CrystalReportViewer ID=csRelatorio runat=server AutoDataBind=true //EnableDatabaseLogonPrompt=False EnableParameterPrompt=False

3)
No código fonte C# da página RelRelatorio.aspx utilize os dois métodos informados no exemplo abaixo(ConfiguraCrystalReports e SetDBLogonForReport), depois no método page load chame o método ConfiguraCrystalReports.
Pronto o relatório já esta configurado.
// ==== Codigo fonte da pagina Aspx que chama o relatorio RPT ====
// configuração do Crystal reports
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;

namespace AplicativoWeb.Relatorios
{
public partial class RelRelatorio : System.Web.UI.Page
{
// Load da pagina
protected void Page_Load(object sender, EventArgs e)
{
ConfiguraCrystalReports();
}
// configuração do Crystal reports
private void ConfiguraCrystalReports()
{
ReportDocument rpt = new ReportDocument();
string reportPath = Server.MapPath(relatorio.rpt);
rpt.Load(reportPath);
ConnectionInfo myConnectionInfo = new ConnectionInfo();
myConnectionInfo.ServerName = servidor; // Utilize o nome do servidor ou IP
myConnectionInfo.DatabaseName = Nome_Banco_de_Dados;
myConnectionInfo.UserID = usuario;
myConnectionInfo.Password = senha;
SetDBLogonForReport(myConnectionInfo, rpt);
csRelatorio.ReportSource = rpt;
}
// Conexao de logon do relatorio
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);
}
}
}
}
Espero ter auxiliado aos demais usuários Asp.NET e C# na utilização de relatórios com o Crystal Reports#Código

#Código

Citação: