1

我有一个带有动态参数的 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. 我已经检查了报告中所有表/视图的 table.LogOnInfo.ConnectionInfo.ServerName 和 table.LogOnInfo.ConnectionInfo.DatabaseName,它与我连接到的数据库相同。

  2. 如果我设置 set table.Location 我可以查看可用值列表。

问题:

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

0 回答 0