共通フィールドとデータフィールドを文字列結合した時、正しい値が表示されない場合がある

文書番号 : 40131     文書種別 : 制限事項     登録日 : 2017/03/10     最終更新日 : 2017/09/27
文書を印刷する
対象製品
ActiveReports for .NET 11.0J
詳細
※この現象は「ページレポート/RDLレポート」のみで発生します。
※サービスパックの適用状況によって、発生する事象の内容が異なります。

共通フィールドとデータフィールドを文字列結合するような式を設定した時、データフィールドの値または共通フィールドの値が正しく表示(取得)されない場合があります。

たとえば、ページ番号と"Field1"というフィールドの値を文字列結合して、TextBoxコントロールに表示する場合、以下のような式をValueプロパティに設定します。

◆式
=Globals!PageNumber & "ページ:" & Fields!Field1.Value


このレポートが2ページ表示され、フィールド"Field1"内のレコードの値を"Data1"と仮定した場合、以下のように表示されるのが正しい状態です。
ページ出力内容
1ページ目1ページ:Data1
2ページ目2ページ:Data1

本事象は、上記のように表示されない事象です。具体的な表示内容は、以下のようにサービスパックの適用状況によって異なります。

初版(11.0.9393.1)およびSP2(11.2.11262.1)の場合:データフィールドの値が出力されない
ページ出力内容
1ページ目1ページ:
2ページ目2ページ:

SP1(11.1.10433.1)以降の場合:ページ番号がすべてのページについて"1"になる
ページ出力内容
1ページ目1ページ:Data1
2ページ目1ページ:Data1


なお、本事象は共通フィールドと固定の文字列を結合した場合や、データフィールドと固定の文字列を結合した場合には発生しません。共通フィールドとデータフィールドを1つの式内で結合した場合にのみ発生します。

問題が発生する共通フィールドとしては、以下のようなものが一例として挙げられます。

共通フィールド内容
Globals!PageNumberページ番号
Globals!TotalPages総ページ数
Globals!PageNumberInSectionページ番号(セクション内)
Globals!TotalPagesInSection総ページ数(セクション内)
Globals!CumulativePageNumberページ番号(丁合い)
Globals!CumulativeTotalPages総ページ数(丁合い)

※共通フィールドについては、製品ヘルプの以下のトピックをご覧ください。

 ActiveReportsユーザーガイド
  - 概念
   - ページレポート/RDLレポートの概念
    - 式
     - 共通フィールド

なお、本件は9.0J以前のバージョンでは発生いたしません。9.0J以前のバージョンで、共通フィールドとデータフィールドを同一式内に設定しているような場合には、以下の「回避方法」に記載された対処が必要となります。
回避方法
本事象を回避する方法としては、以下の2通りが考えられます。
  1. 式で結合せず、コントロールを分ける
    1つのTextBoxコントロールで共通フィールドとデータフィールドを結合して表示するのではなく、共通フィールドの値を出力するコントロールと、データフィールドの値を出力するコントロールを分けて、レポート上に配置する方法です。

    問題が発生する式を、TextBoxコントロールのValueプロパティに設定している場合は、こちらの方法をご検討ください。

  2. 別のTextBoxコントロールを経由する
    データフィールドから直接値を取得するのではなく、いったん別のTextBoxコントロールにデータフィールドの値を表示し、そのコントロールを参照するような式に変更する方法です。

    レポート上のコントロールを式中で参照する場合、「ReportItems」を使用します。
    たとえば、前述の例の場合、データフィールド"Field1"の値を出力するためのTextBoxコントロールを「TextBox1」とすると、以下のような式になります。
    =Globals!TotalPages & "ページ:" & ReportItems!TextBox1.Value

    問題の式を、Value以外のプロパティに記述したい場合は、こちらの方法をご検討ください。

    なお、こちらの方法を用いる場合、データフィールドの値を取得するコントロール(上記の場合、「TextBox1」)を非表示(Visibility.Hidden = True)にすることはできません。レポート上にこのコントロールの値を表示したくない場合は、文字色(Colorプロパティ)を白(White)や透明(Transparent)に設定するか、視認できないくらい小さなサイズに設定してください。



※情報訂正に関するお詫び
本件につきましては、当初『Service Pack 1(v11.1.10433.1)にて修正されました』とご案内いたしており、Service Pack 1付属のリリースノートの「更新履歴」にも、修正項目として記載いたしておりましたが、その後の再調査により、発生内容が変化するのみであることが判明いたしました。

レポートエンジンの基本的な実装内容が関係しており、あらゆるユースケースに対応した安定的な修正が困難であることから、制限事項に変更させていただきました。

本件に関する事象確認・修正・検証・情報公開等について、いたらない点がありましたことを謹んでお詫び申し上げます。