0

データベースにクエリ「COLORS」を含むデータセットがあり、結果は次のようになります。

| | pdf | 赤 | 赤 |

| | rdl | 黒 |

| | エクセル | 青 | 青 |

私の目標は、レポートのエクスポート形式に応じて背景色を変更することです。色はデータベースで変更できるため、動的にする必要があります。PDF にエクスポートすると、背景色が赤くなるはずです... 次のように、背景色の式でフィルターを使用できますか? はいの場合、どのように?

=iif(Globals!RenderFormat.Name=Filter((Fields!Format.Value, "COLORS"),"pdf",true,???),
4

1 に答える 1

2

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 を実行する必要があることです。これは必ずしも簡単なことではありません。

于 2013-11-04T14:37:15.707 に答える