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 を使用せずにアプリケーションをテストすると、レポートを開くことができますが、[パラメーター値の入力] ウィンドウに配布ポイントの使用可能な値が表示されません。
ノート:
レポート内のすべてのテーブル/ビューについて、table.LogOnInfo.ConnectionInfo.ServerName と table.LogOnInfo.ConnectionInfo.DatabaseName を確認しましたが、接続先のデータベースと同じです。
set table.Location を設定すると、使用可能な値のリストを表示できます。
質問:
- setdatasource 関数を使用せずにレポートを開くと、使用可能な値のリストが表示されないのはなぜですか?
- Crystal Reports 2008 で FieldParameter の使用可能な値をプログラムで変更/制御することは可能ですか?