指定したデータセットから、指定したフィールドの最初に一致する値を返します。
構文
Lookup(source
, destination
, result
, dataset
)
引数
source
:現在のスコープのデータセットのフィールド値を指定します。通常はデータベースの外部キーフィールド値となり、この値が検索するキーとなります。
destination
:関連付けられたデータセットのフィールド値を指定します。通常はデータベースの外部キーフィールドによって参照されるテーブルのIDです。このフィールドの値が、sourceパラメーターで指定したフィールドの値と一致するかどうか評価されます。
result
:結果として返したい関連付けられたデータセットのフィールド名を指定します。一致したレコードにおけるこのフィールド値が出力されることになります。
dataset
:関連付けられたデータセットの名前を指定します。 例:
次の式は、Productsデータセットがデータ連結されたTableデータ領域にCategoriesデータセットのカテゴリ名を表示します。
{Lookup(categoryId, categoryId, categoryName, "Categories")}
1対多のリレーションシップが存在する場合、指定したデータセットから指定したフィールドの一致するすべての値を返します。複数の値が返る可能性があるため、戻り値は配列となります。
構文
LookupSet(source
, destination
, result
, dataset
)
引数
source
:現在のスコープのデータセットのフィールド値を指定します。通常はデータベースの外部キーフィールド値となり、この値が検索するキーとなります。
destination
:関連付けられたデータセットのフィールド値を指定します。通常はデータベースの外部キーフィールドによって参照されるテーブルのIDです。このフィールドの値が、sourceパラメーターで指定したフィールドの値と一致するかどうか評価されます。
result
:結果として返したい関連付けられたデータセットのフィールド名を指定します。一致したレコードにおけるこのフィールド値が出力されることになります。
dataset
:関連付けられたデータセットの名前を指定します。 例:
次の式を使用して、現在のスコープのTerritoryID値を持つすべてのストアを検索できます。
{LookupSet(TerritoryID, TerritoryID, StoreName, "Stores")}
指定したスコープ内の前のデータ行の式の値を返します。
構文
Previous(expression
, [scope
])
引数
expression
:集計値を計算する式です。
scope
:オプションの計算のスコープです。 例:
次の式を使用して、現在のスコープのSalesCountフィールドの前の値を返すことができます。
{Previous(SalesCount)}
指定したスコープ内の実行中の行数を返します。
構文
RowNumber([scope
])
引数
scope
:オプションの計算のスコープです。 指定した区切り文字を使用して、配列の要素を結合した文字列を作成して返します。
構文
Join(sourcearray
, [ delimiter
])
引数
sourcearray
:結合する部分文字列を含む配列です。たとえば複数の値が選択されたレポートパラメータなどが該当します。
delimiter
:返される文字列内の部分文字列を区切るために使用されるオプションの文字列です。省略した場合、空白文字(" ")が使用されます。 例:
次の式を使用して、現在のCategoryID値を持つカテゴリの製品リストを表示できます。
{Join(LookupSet(CategoryId, CategoryId, ProductName, "Products"), ",")}
Lookup関数の一般的な使用目的は、関連のあるデータセットから値を取得して出力することです。これはデータソースを作成する時点でビューを使用して複数テーブルを結合する方法の代替手段となる場合があります。
たとえば、「商品」と「カテゴリ」という名前のレポートデータソースをそれぞれ作成します。商品テーブルには「カテゴリID」フィールドが含まれており、このIDはカテゴリテーブルの「カテゴリID」と関連付けされているフィールドです。
Tableデータ領域の[データセット]プロパティに設定されているのは商品テーブルのデータセットです。TextBoxコントールに次の式を入力します。
{Lookup(カテゴリID, カテゴリID, カテゴリ, "カテゴリ_DataSet")}
レポートのプレビューして確認すると、その商品に関連するカテゴリテーブルの「カテゴリ」フィールドの値が出力されることを確認できます。
LookupSet関数は、指定されたデータセットから一致する複数行の値を返すため、データセット間が1対多の関係を持っている場合に使用します。
たとえば、「商品」と「カテゴリ」という名前のレポートデータソースをそれぞれ作成します。商品テーブルには「カテゴリID」フィールドが含まれており、このIDはカテゴリテーブルの「カテゴリID」と関連付けされているフィールドです。この場合、カテゴリテーブルから商品テーブルを見た場合、「カテゴリID」により1対多の関係を持っている状態です。
Tableデータ領域の[データセット]プロパティに設定されているのはカテゴリテーブルのデータセットです。TextBoxコントールに次の式を入力します。
{Join(Lookupset(カテゴリID, カテゴリID, 商品名, "商品_DataSet"), ",")}
レポートをプレビューして確認すると、各商品カテゴリに含まれる商品名がコンマ区切りの文字列として出力されることを確認できます。配列からコンマ区切りの文字列への変換はJoin関数を使用しています。