Array
(
)

Falha no Logon - Crystal em VS2010 com Sql Server 2008

Joaquim Quintella
   - 01 jun 2011

Pessoal,desenvolvi um report em Crystal que utiliza uma view do SQl Server 2008. Estou usando o VS2010.
  O relatório é apresentado mas quando efetua-se a paginação, pede o login do banco.
  O Mesmo acontece ao tentar exportar o relatorio.
  Alguem sabe como contornar essa situação?
  Já implementei a seguinte rotina no webform onde está o view do Crystal:

public CrystalDecisions.Shared.TableLogOnInfos LogOnInfo { get; set; }

private void SetLogOnInfo(String userID, String password, String databaseName, String serverName, String tableName)
{
TableLogOnInfo logOnInfo = new TableLogOnInfo();
logOnInfo.ConnectionInfo.ServerName = serverName;
logOnInfo.ConnectionInfo.DatabaseName = databaseName;
logOnInfo.ConnectionInfo.UserID = userID;
logOnInfo.ConnectionInfo.Password = password;
logOnInfo.TableName = tableName;
TableLogOnInfos tableLogOnInfos = new TableLogOnInfos();
tableLogOnInfos.Add(logOnInfo);
ViewRpt.LogOnInfo = tableLogOnInfos;
}

Marcio
   - 10 jun 2011

Joaquim,
Costumo utilizar DataSet tipado, ou seja, trabalho desconectado do banco de dados, nunca tive problemas.Você podia tentar isso.

Faustino Júnior
   - 29 mar 2012

ola.

Você pode utilizar o seguinte código abaixo no c# de uma página "aspx".
No meu exemplo eu criei o relatório.rpt e uma página relRelatorio.aspx, na página aspx basta inserir o componente reportviewer.

Para qualquer outra dúvida acesse o link abaixo.
http://faustino-jr.blogspot.com.br/2012/03/como-configurar-logon-e-utilizar-o.html

// 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);
}
}