Lookup
関数を使用して少し作業して、これを実現しました。これは 2008R2 以降のみですが、既に 2008R2 以降を見ているという事実はGlobals!RenderFormat.Name
、これで問題ないことを意味します。
私の最初の考えは次のようなものでした:
=Lookup(Globals!RenderFormat.Name
, Fields!RenderFormat.Value
, Fields!Color.Value
, "Colors")
しかし、これはエラーをスローしました。
ただし、回避策として、レポートに表示するテキスト ボックスを設定し=Globals!RenderFormat.Name
、レポート アイテムの式に基づいています。
=Lookup(ReportItems!Textbox1.Value
, Fields!RenderFormat.Value
, Fields!Color.Value
, "Colors")
何らかの理由で、これは他の失敗した場所でうまく機能します。
必要に応じて、レンダリング形式を表示するテキスト ボックスを非表示に設定できます。
その他のオプション... 通常、スタイリングには、既に使用しているデータベース アプローチがあり、埋め込みレポート コードまたはサーバーに展開された DLL を介してこれを実行します。
レポートにコードを埋め込むだけでは、必要な動的なスタイルを実現するのに実際には役に立たず、DLL オプションが残されます。
これには、パラメーター (つまり、レンダリング形式グローバル変数) に基づいて色の値を返す単純な関数を使用して DLL を作成する必要があります。
これの利点は、コード ベースが 1 つしかないため、DLL を更新するとサーバー上のすべてのレポートに適用されることです。
このブログ投稿には、サーバー側の DLL を使用してこれを実装する方法の詳細が記載されています。
欠点は、複雑であり、サーバー上で DLL を実行する必要があることです。これは必ずしも簡単なことではありません。