2011-02-08 39 views
4

私は動的パラメータを持つCrystalレポートを持っています(たとえば、いくつかのデータベースのテーブルのCOUNTRIESにリンクされています)。 どうすればこのパラメータ(国のリスト)の値をプログラムで取得できますか? は、静的なiについては、使用して、デフォルト値を取得することができます。Crystal Reports動的パラメータの値

 ReportDocument rd = new ReportDocument(); 
     rd.Load(reporthPath); 
     rd.ParameterFields; // contains params with default values collections 

ダイナミックパラメータは、DefaultValuesコレクションにアイテムはありません。私はレポートのための既存の接続を取得することができますが、どこで私は接続と動的パラメータの間の関係を得ることができますか?

答えて

2

これはCrystal Reportsでは実行できません。 ではなく、動的パラメータフィールドを使用する方が良いです。彼らはレポートを不要にします。代わりに静的パラメータに変換して、コードからデフォルト値を入力してください。それははるかに速く、受け入れられた値が何であるかを知っています。

0

上記の回答が間違っています - Crystal Reports XI(少なくとも私の情報がどこにあるのか)は可能です。 http://devlibrary.businessobjects.com/BusinessObjectsXIR2/en/en/CrystalReports_dotNET_SDK/crsdk_net_doc/doc/crsdk_net_doc/html/crtsktutorialsrdparametersdiscrete.htm、特に部品2(パラメータを持つレポートの作成)と5(デフォルトパラメータを表示しListBoxコントロールを作成します)

基本的に可能な値のリストは、デフォルト値のリストから撮影することができ、

感謝を参照してください、

自分自身を接地するために、この問題を実行した後、既存の答えに少しの改善

MD-テック

+1

はいわかっています。ポイントは、これは手動で入力されたデフォルト値*静的*パラメータフィールドでのみ機能するということです。 *動的な*パラメータフィールドでは、レポートの選択されたデータベーステーブルからデフォルト値が入力されても機能しません。だから、実用的なコード例でこれを証明できない限り、私はあなたと意見を異にし続けます。 –

0

A ParameterFieldの値の静的リストは、DefaultValuesコレクションの項目としてこれらの値を持ちます。問題は、動的リストを持つParameterFieldにはこれらの値があらかじめ設定されておらず、APIにはこれらを照会するメカニズムがないように見えることです。

回避方法は、動的リストの代わりに静的リストを使用することですが、何百もの許容値があり、時間とともに変化する可能性があります。レポートを変更することを覚えていない限り、動的なリストはこの文脈で意味があります。

さらに、CrystalDecisions.ReportAppServer.DataDefModel.ParameterFieldを使用すると、プロパティBrowseFieldが表示されます。 BrowseFieldには、ADO.NETでクエリできるTableAliasNameというプロパティがあります。ただし、BrowseFieldは静的パラメータにのみ設定されています。動的パラメータを使用する場合はnullです。これは現在、SAPのナレッジベース「Article 2114469」に「修正が必要」と文書化されています。

テーブルと列名を取得したら、ADO.NETを使用してデータベースにクエリを行い、その値をDynamicパラメーターのDefaultValuesコレクションに貼り付けます。これを簡単にするために、パラメータに命名規則を使用することを検討してください。おそらく、レポートで使用されていない静的パラメータを使用して、テーブルと列の情報を格納します。