在Crystal Reports 2008报表上设置数据源位置

时间:2013-09-26 13:08:37

标签: c# crystal-reports

我有一个带有动态参数的Crystal Reports 2008报告(例如,分发点指的是列DP.distributionPoint)。在我的应用程序(C#)中打开报表时,我在运行时设置数据源并正确打开报表,并在Enter Parameter Values窗口中显示报表,显示分发点(DP.distributionPoint)的可用值。

代码我用来动态设置数据源(请注意,此报告没有子报告,但报告指的是数据库表和数据库中的视图)

SetDataSource(ReportDocument report, string serverName, string databaseName)
{
    //  Set the connection for the main report.
    report.DataSourceConnections[0].SetConnection(serverName, databaseName, true);

    TableLogOnInfo tableLogonInfo = new TableLogOnInfo();
    ConnectionInfo connectionInfo = new ConnectionInfo();
    connectionInfo.DatabaseName = databaseName;
    connectionInfo.ServerName = serverName;
    connectionInfo.IntegratedSecurity = true;

    foreach (Table table in report.Database.Tables)
    {
        tableLogonInfo = table.LogOnInfo;
        tableLogonInfo.ConnectionInfo = connectionInfo;
        table.ApplyLogOnInfo(tableLogonInfo);

        table.Location = tableLogonInfo.ConnectionInfo.DatabaseName + ".dbo." +
                     table.Location.Substring(table.Location.LastIndexOf(".") + 1);
    }
}

每次打开报告时都需要设置数据源。我的计划是在报表上设置数据源并使用位置信息保存报表,因此下次我不需要调用set datasource。

但是当我在没有setdatasource的情况下测试应用程序时,我可以打开报告但是 “输入参数值”窗口中分配点的可用值现在不显示。

注意:

  1. 我检查了报告中的所有表/视图的表.LogOnInfo.ConnectionInfo.ServerName和table.LogOnInfo.ConnectionInfo.DatabaseName,它与我连接的数据库相同。

    < / LI>
  2. 如果我设置了set table.Location,我可以查看可用值列表。

  3. 问题:

    1. 为什么我在没有setdatasource函数的情况下打开报表时没有显示可用值列表?
    2. 是否可以在Crystal Reports 2008中以编程方式更改/控制FieldParameter的可用值?

0 个答案:

没有答案