Telerikを使用したことがないので、次のアドバイスはCrystalにのみ適用されます。
Crystalでは、少なくとも2つの異なる方法でクロス集計を条件付きで非表示にできます。
- [フォーマット]ダイアログ(クロスタブエキスパートではありません)から-クロスタブを右クリックし、メニューから[クロスタブのフォーマット...]を選択し、[
x-2
フォーマットエディター]ダイアログの[共通]タブで[抑制]の横のボタンを押して、適切な式(のようなもの{?crosstab1s1}="n/a"
)。
- クロスタブを独自のサブセクションに配置し、サブセクションを条件付きで非表示にすることにより、関連するサブセクションの[レポートデザイナーのデザイン]タブでレポートレイアウト領域の左側にある灰色の領域を右クリックし、[セクションエキスパート]を選択します。 ..メニューから、
x-2
[セクションエキスパート]ダイアログの[共通]タブにある[抑制(ドリルダウンなし)]の横のボタンを押して、適切な式を入力します。
これらの2つのアプローチの後者を使用することをお勧めします。クロスタブ自体を抑制しても、表示されるはずの空白が残ります。
クロス集計をそれぞれ独自のサブレポートに配置し、条件付きでそれらを抑制することもできます。ただし、これにより、現時点では必要ないと思われる複雑さが増します。
他のいくつかのコメント:
- Crystalのパラメーターは、ASPで実現できるパラメーターよりもはるかに柔軟性が低いため、可能であれば、ASPですべてのパラメーターを選択し、パラメーターをCrystalに渡します。
- Crystalのnullの処理はやや扱いにくいため、パラメーターのnullとしての評価に依存するのではなく、クロス集計が不要であることを示す特定の値を渡します。
- クロス集計パラメータは現在、クロス集計1とクロス集計2として配置されており、それぞれセクション1、2、3に含まれています。これが、合計で最大6つのクロス集計があるのか、それとも2つだけであるのかは明確ではありません。
- 前者の場合、行のグループ化、列のグループ化、および要約されたフィールドをどのように指定するかが明確ではありません。
- 後者の場合は、セクション1、2、および3の名前を、行のグループ化、列のグループ化、および要約フィールドに変更することをお勧めします(これがこれらの表現であると想定しているため)。
- 現在、[グループの合計を表示]オプションと[パーセンテージを表示]オプションがあります。これらはクロス集計に適用されているようです。これらのオプションはCrystalで指定できますが、レポートデザイナー内で条件付きで指定することはできません。
- Crystal APIにアクセスできる場合は、実行時にこれらのオプションをプログラムで設定できるはずです。
- それ以外の場合、各クロス集計に両方のオプションを含める場合の唯一のオプションは、各クロス集計の4つのバージョンをレポートに追加することです。各バージョンは、選択されたオプションに基づいて条件付きで抑制されます。(代替手段がない限り、このアプローチはお勧めしません。)
- Crystalは動的データ構造を処理できないため(つまり、レポートを設計するときにデータ構造を知っている必要があります)、次のような構造で、指定されたパラメーターに基づいてSQLストアドプロシージャで結果セットを生成することをお勧めします。
Dataset structure
crosstab1Row
crosstab1Column
crosstab1SumValue
crosstab2Row
crosstab2Column
crosstab2SumValue
reportColumn1
reportColumn2
reportColumn3
reportColumn4
reportColumn5