ActiveReports通信

.NET帳票開発ツール ActiveReports の技術情報をお届けします。

ActiveReports これ知ってる?-第9回:新機能紹介「Lookup関数」-

今回のテーマは11.0Jの新機能「Lookup関数」です。

Lookup関数は、異なるデータセットから値を取得するための関数です。ページレポート/RDLレポートのValueプロパテイの式として使用できます。この関数の強みは「ページレポートでも使える」ことにあります。ご存知の方も多いかと思いますが、ページレポートではデータセットを複数登録することはできても、レポート上に表示できるフィールドは単一のデータセットに限定されています。

レイアウト的にはページレポートを使用したいけど、データセットを複数参照する必要があるからRDLレポートを使用しているというお客様も中にはいらっしゃるのではないでしょうか。新機能の「Lookup関数」を使用すると、データセットから直接的に値を取得できるため、ページレポートでも複数のデータセットの値をレポート上に表示することが可能になります。

f:id:ComponentOne_JP:20170731172008p:plain

具体的な使用方法は、「Lookup関数」に4つの引数を渡します。たとえば、TableにユーザーID(UserID)が表示されていて、別のデータセット(DataSet2)にユーザー情報(ID、Name)が存在する場合、以下のような記述でユーザー名を取得できます。

◆Lookup関数の利用例

=Lookup(Fields!UserID.Value, Fields!ID.Value, Fields!Name.Value, "DataSet2"))

関数の詳細については、製品ヘルプ「データ領域での複数データセットの使用」トピックをご確認ください。

また、別のデータセットから値を取得したいという要件では、集計値を取得したいというケースも多いと思われます。しかしながら、取得先のデータセットに該当するレコードが複数ある場合、Lookup関数は1つの値しか取得しません。また、以下のように他の関数と併用することもできません。

◆動作しない例(Lookup関数の中でSum関数を利用)

=Lookup(Fields!ProductID.Value, Fields!ProductID.Value, Sum(Fields!Quantity.Value), "DataSet2"))

 上記の要件を実現するためには、データセット自体を合計値取得用として登録する必要があります。あらかじめSQLクエリで集計した値をデータセットとして登録しておけば、その値をLookup関数で取得できます。

「Lookup関数」を活用すれば、今までページレポートでは実現が困難であったレイアウトも実現できる可能性があります。ぜひお試しください。