【问题标题】:How to set Crystal reports Connection info如何设置水晶报表连接信息
【发布时间】:2015-03-03 02:03:01
【问题描述】:

我使用 Crystal 报表来报告我的应用程序。问题是我不知道怎么做

为 Crystal 报表设置连接信息。这是我尝试过的代码:

private void button5_Click(object sender, EventArgs e)
    {
        ReportDocument cryRpt = new ReportDocument();

        TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
        TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
        ConnectionInfo crConnectionInfo = new ConnectionInfo();
        Tables CrTables;

        crConnectionInfo.ServerName = ".\\SQLEXPRESS";
        crConnectionInfo.DatabaseName = "GestStock.mdf";
        crConnectionInfo.UserID = "";
        crConnectionInfo.Password = "";
        CrTables = cryRpt.Database.Tables;

        cryRpt.Load("C:\\Documents and Settings\\Administrateur\\Mes documents\\GestionStock\\GestionStock\\CrystalReport1.rpt");

        foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
        {
            crtableLogoninfo = CrTable.LogOnInfo;
            crtableLogoninfo.ConnectionInfo = crConnectionInfo;
            CrTable.ApplyLogOnInfo(crtableLogoninfo);
        }

        crystalReportViewer1.ReportSource = cryRpt;
        crystalReportViewer1.Refresh();
    }

但它不起作用我收到了这个错误消息:

Chemin d'accès au fichier de rapport non valide (Invalid report file path)

PS:这是我的 sql server 数据库的连接字符串:

"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\DOCUMENTS AND SETTINGS\ADMINISTRATEUR\MES DOCUMENTS\GESTIONSTOCK\GESTIONSTOCK\GestStock.mdf;Integrated Security=True;User Instance=True";

那么如何正确设置呢?

【问题讨论】:

  • 你能把错误信息转换成英文吗?
  • 报告文件路径无效

标签: c# sql-server crystal-reports


【解决方案1】:

Crystal Reports 数据源基于 DataSet,因此您必须首先初始化 DataSet 类的实例,并用您的 DataSet 中的信息填充它,然后根据您的需要设置其参数。

不过,您的错误信息:

Chemin d'accès au fichier de rapport non valide(报告文件路径无效)

表示您的报告的文件路径无效。所以这与未分配或错误分配的连接字符串无关。

这是一个有趣的答案,它展示了如何使用 DataSet 来填写 Crystal 报表:

确保您的报告是从预期的文件路径加载的,并且可以访问它(也许并发访问是问题的原因)?

一旦您的报告按预期加载,那么我想您应该尝试使用数据集来填充报告并使用它设置其数据源,如链接答案中所示。

这样,您的连接字符串被分配给用于实例化 SqlCommandSqlConnection,然后您的命令被传递给 SqlDataAdapter.SelectCommand 属性。这样,您可以通过在连接字符串中指定 Integrated Security=true 并在打开它之前将其分配给 SqlConnection 实例来使用默认凭据。

【讨论】:

  • 感谢您的解释和帮助
  • 不要忘记包含 SqlConnectionSqlCommand 的初始化,以及在 using中可丢弃的所有内容> 块以充分管理资源。 (很高兴我能帮上忙!)
【解决方案2】:

基本代码如下:-

        SqlConnection cnn ;
        string connectionString = null;
        string sql = null;

        connectionString = "data source=SERVERNAME;initial catalog=DATABASENAME;user  
                            id=USERNAME;password=PASSWORD;";
        cnn = new SqlConnection(connectionString);
        cnn.Open();
        sql = "SELECT columnName FROM tableName";
        SqlDataAdapter dscmd = new SqlDataAdapter(sql, cnn);
        DataSet1 ds = new DataSet1();
        dscmd.Fill(ds, "Product");
        MessageBox.Show (ds.Tables[1].Rows.Count.ToString());
        cnn.Close();

        CrystalReport1 objRpt = new CrystalReport1();
        objRpt.SetDataSource(ds.Tables[1]);
        crystalReportViewer1.ReportSource = objRpt;
        crystalReportViewer1.Refresh();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-07
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多