我有一个带有动态参数的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的情况下测试应用程序时,我可以打开报告但是 “输入参数值”窗口中分配点的可用值现在不显示。
注意:
我检查了报告中的所有表/视图的表.LogOnInfo.ConnectionInfo.ServerName和table.LogOnInfo.ConnectionInfo.DatabaseName,它与我连接的数据库相同。
< / LI>如果我设置了set table.Location,我可以查看可用值列表。
问题: