Crystal Reports e ligação de dados em tempo de execução

Eu tenho lutado com isso por 4 dias agora. Eu tenho um relatório de cristal muito simples (estou usando apenas para uma prova de conceito). O relatório está vinculado a um banco de dados e eu exibo apenas um campo de uma tabela no banco de dados.Não há sub-relatórios.Ele foi criado com o Crystal Reports 2008. Eu preciso exibir este relatório no meu aplicativo web .Net MVC, mas eu preciso ser capaz para alterar as informações de conexão do banco de dados desde este aplicativo. será usado em bancos de dados diferentes com estrutura de tabela idêntica. Então eu criei um formulário web padrão e arrastei um CrystalReportViewer e CrystalReportSource para ele.

Este é o meu código:

protected void Page_Load(object sender, EventArgs e)
    {
        this.CrystalReportSource1.EnableCaching = false;
        this.CrystalReportSource1.ReportDocument.Load(@"C:\ReportName.rpt");

        //1)  I get the data connection variables from my app - this part works well  
              and is irrelevant in this case.

 //2) Once I have the data I need to apply it to the connection of the report
 ConnectionInfo crConnection = new ConnectionInfo();
 crConnection.UserID = userID;
 crConnection.ServerName = datasource;
 crConnection.DatabaseName = "";
 crConnection.Password = password;


 AssignConnectionInfo(CrystalReportSource1.ReportDocument,crConnection);

 CrystalReportSource1.ReportDocument.DataSourceConnections[0].SetConnection 
 (crConnection.ServerName, crConnection.DatabaseName, false);

CrystalReportSource1.ReportDocument.SetDatabaseLogon(crConnection.UserID, 
crConnection.Password, crConnection.ServerName, crConnection.DatabaseName);


CrystalReportViewer1.ReportSource = CrystalReportSource1.ReportDocument;
CrystalReportViewer1.RefreshReport();

 }//close the page load function

Esta é a função AssignConnectionInfo:

private void AssignConnectionInfo(ReportDocument document,ConnectionInfo crConnection)
    {
        foreach (CrystalDecisions.CrystalReports.Engine.Table table in document.Database.Tables)
        {
            TableLogOnInfo logOnInfo = table.LogOnInfo;
            if (logOnInfo != null)
            {
                table.ApplyLogOnInfo(table.LogOnInfo);
                table.LogOnInfo.TableName = table.Name;
                table.LogOnInfo.ConnectionInfo.UserID = crConnection.UserID;
                table.LogOnInfo.ConnectionInfo.Password = crConnection.Password;
                table.LogOnInfo.ConnectionInfo.DatabaseName = crConnection.DatabaseName;
                table.LogOnInfo.ConnectionInfo.ServerName = crConnection.ServerName;

                CrystalReportViewer1.LogOnInfo.Add(table.LogOnInfo);

            }
        }



    }

Então, o que está acontecendo é que a página é carregada e o banner do Crystal, barra de ferramentas, é exibido, mas o campo de vinculação de dados que eu tenho no meu relatório está em branco. Você vê alguma coisa errada?

Muito obrigado antecipadamente

Susan

questionAnswers(2)

yourAnswerToTheQuestion