レッスン 2: 計算フィールドの作成 (レポート ビルダ 1.0)
このレッスンでは、既存の式を展開し、その式にフィルタを適用して、フィルタを保存した後、変更した式を新しい計算フィールドとして保存します。
データのソースは多数のエンティティで構成され、各エンティティには少なくとも 1 つのフィールドが含まれている可能性があります。しかし、使用可能なフィールドの中でも、取得するデータによっては実際に必要なデータを返さないフィールドもあります。このような場合、フィールドの既存の式を変更して、新たなフィールドとして保存できます。または、実際に必要なデータを取得するための独自の計算フィールドを作成することもできます。
各フィールドが 1 つのエンティティに関連付けられているのと同様に、新たに作成するフィールドも 1 つのエンティティに関連付ける必要があります。こうすることで、レポート ビルダが基になるデータベースからのデータの取得や操作に使用する情報が提供されます。
すべてのフィールドには式が含まれます。式を構成する基になる要素を表示する場合、その式を展開できます。式を展開することで、フィールドで参照する各エンティティ間の関係を参照できます。式を展開すると、その式の変更、関係パスの任意の箇所へのフィルタの適用、集計レベルの変更、重複の削除が可能になります。
新しく計算フィールドを作成した後は、それをレポートに格納します。レポート内の他の式やフィルタのフィールドを再利用できます。ただし、別のレポート内の計算フィールドの使用を希望する場合は、新しいレポートでそのフィールドを再作成する必要があります。同じ計算フィールドを繰り返し作成していることがわかった場合は、データ ソースの作成者に問い合わせ、データ ソースにその計算フィールドを組み込むように依頼してください。
式を展開するには
デザイン領域で、[#Sales] 列のセル 0 を右クリックし、[式の編集] をクリックします。
[式の定義] ダイアログ ボックスが表示されます。
[各 Product の式] ボックスで、[#Sales] をダブルクリックします。
式を展開し、データ ソース内での式のコンテキストを参照します。
式にフィルタを適用するには
['#Sales' の展開された式] ボックスで、Sales エンティティの [フィルタが適用されていません] をクリックし、[新しいフィルタの作成] をクリックします。
[データのフィルタ選択] ダイアログ ボックスが表示されます。
[エンティティ] ボックスで、[Sales Order] をクリックします。
[フィールド] ボックスで、[Order Date] をクリックします。
[Order Date] フィールドが [フィルタ] 領域に追加されます。
フィルタ句で [が次の値に等しい] をクリックし、[相対日付]、[過去 (n)] の順にポイントし、[年間] をクリックします。
[が次の値に等しい] が [が過去...年間に含まれる] に変化します。
スピン ボックスの上矢印をクリックして [2] を選択します。
このフィルタを適用することによって、レポート ビルダは販売数量を計算する際に過去 2 年間の販売数量に相当するデータのみを返します。
フィルタに名前を付けるには
[フィルタ名] ボックスに「Order date in last 2 years」と入力します。
[OK] をクリックします。
多くのフィルタを作成し、個別に名前を付け、式の任意の箇所にそのフィルタを適用できます。作成したフィルタに名前を付けないと、フィルタ名にはそのフィルタを適用する実際のフィールド名が反映されます。
計算フィールドの名前を変更して保存するには
[この式を新しい Product フィールドとして保存します] チェック ボックスをオンにします。
[OK] をクリックします。
[新しいフィールド名] ダイアログ ボックスが表示されます。
「# Sales in Last 2 Years」と入力します。
[OK] をクリックします。
デザイン領域が再表示されます。
レポート ビルダ ウィンドウのデザイン領域の # Sales フィールドの名前が変更されていることに注意してください。また、エンティティの一覧で Product エンティティを選択すると、このレッスンで作成した計算フィールドがフィールドの一覧の先頭に表示されます。
これで、新しい計算フィールドを正しく作成できました。次のレッスンでは、別の計算フィールドを作成し、過去 2 年間で販売された各製品の合計数量を決定するフィールドに既存のフィルタを適用します。詳細については、「レッスン 3: 新しい計算フィールドへの既存のフィルタの適用 (レポート ビルダ 1.0)」を参照してください。