3

テキストボックスとテーブルの一般的なレイアウトを持つSSRS「ステートメント」タイプのレポートがあります。メインテキストボックスの場合、テキストをカスタマイズできるように、ユーザーがパラメータとして値を指定できるようにします。

Parameters!MainText.Value = "Dear Mr.Doe, Here is your statement."

次に、テキストボックスの値をパラメータの値に設定できます。

=Parameters!MainText.Value

ただし、次のように、入力パラメータ値にデータセットフィールドを含めることができるようにする必要があります。

Parameters!MainText.Value = "Dear Mr.Doe, Here is your [Fields!RunDate.Value] statement"  

レポートの出力は次のようになります。

「親愛なるドウさん、これがあなたの11月の声明です。」

静的テキストとフィールドリクエストを指定することで、テキストボックスでこれを行うように定義できることは知っていますが、SSRSは、パラメータ文字列内にエスケープしてバインドする必要のあるフィールドリクエストがあることを認識する必要があります。

誰かがこれについて何かアイデアがありますか?SSRS2008R2を使用しています

4

3 に答える 3

1

連結してみましたか?

Parameters!MainText.Value = "Dear Mr.Doe、Here is your"&[Fields!RunDate.Value]& "statement"

于 2012-04-11T18:16:37.517 に答える
1

別の方法を次に示します。データセット値が既に入力されているパラメーター文字列を表示します。

これを行うには、たとえば RunDate という名前のパラメーターを作成し、既定値を「クエリから値を取得する」に設定し、最初のデータセットと値フィールド (RunDate) を選択します。これで、パラメーターは RunDate フィールドを保持し、他の場所で使用できるようになります。このパラメーターを非表示または内部にして、正しいデータ型を設定してください。たとえば、日付/時刻なので、後でその値をフォーマットできます。

次に、必要なデフォルトのテキストを保持する 2 番目のパラメーターを作成します。

Parameters!MainText.Value = "Dear Mr.Doe, Here is your [Parameters!RunDate.Value] statement"

この構文が機能するかどうかはわかりませんが、アイデアは得られます。ここで書式設定を行うこともできます。たとえば、Datetime の月のみです。

="Dear Mr.Doe, Here is your " & Format(Parameters!RunDate.Value, "MMMM") & " statement"

このアプローチでは、組み込みメソッドのみを使用し、パーサーの必要性を回避するため、ユーザーは構文を学習する必要がありません。

もちろん、欠点が 1 つあります。ユーザーはパラメーターの内容を完全に制御でき、レポートの内容と一致しない値を指定できますが、これは String Replace メソッドにも当てはまります。

完全を期すために、単純なオプションもあります。複数のパラメーターを追加する: MainTextBeforeRunDate と MainTextAfterRunDate という名前の 2 つのパラメーターを作成します。

Textbox 値式は次のようになります。

=Parameters!MainTextBeforeRunDate.Value & Fields!RunDate.Value & Parameters!MainTextAfterRunDate.Value.

これはそれ自体を説明する必要があります。多くの場合、最も単純な解決策が最善ですが、この場合、私には疑問があります。少なくともこれにより、RunDate が最終的なレポート テキストに確実に含まれるようになります。

于 2013-06-22T22:14:03.377 に答える
1

劇的に異なるアプローチがいくつかあります。どちらがあなたに最適かを知るには、より多くの情報が必要です:

  1. レポートに埋め込まれたコード。おそらく最も迅速に実装できるのは、パラメーターを返すレポートにコードを埋め込むことですがString.Replace()、動的な値に置き換えるために適切に呼び出されます。文字列を置き換えるユーザー用のコードを確立する必要があります。埋め込みコードを使用すると、レポート内の多くのオブジェクトにアクセスできます。例えば:

    Public Function TestGlobals(ByVal s As String) As String
       Return Report.Globals.ExecutionTime.ToString
    End Function
    

    実行時間を返します。レポートのパラメーターにアクセスするその他の方法を次に示します。

    1.5この関数が非常に大きくなっている場合は、カスタム アセンブリの使用を検討してください。その後、Visual Studio でより優れたオーサリング エクスペリエンスを得ることができます

  2. XML を変更します。これを使用する場所によっては、.rdl/.rdlc XML を直接変更できます。

  3. ReportBuilder などの他のツールを検討してください。レポートの作成に関してユーザーの柔軟性を高める必要がある場合は、SSRS のレポート ビルダーなど、この目的のために特別に作成されたツールが多数あります。
于 2012-04-11T18:12:23.967 に答える