一.概要
パラメータを使用してフィルタリングする場合、特定のパラメータを選択した後、選択した値に従ってフィルタリングされます。本マニュアルでは、都道府県ドロップダウンボックスからパラメータ値を選択することなく、テーブル内のすべての値を調べる方法(下図)を説明します。
二.テンプレートの準備
1.データセットを作成する
データセットds1を添加します。SQL文は:ELECT * FROM Orders。
2.帳票設定
第一行にヘッダーを追加し、データセットds1のフィールドをセルの中に順次にドラッグします。
3.ウィジェット設定
1.ラベルウィジェットを追加し、ウィジェット名を都道府県に設定します。
2.ドロップダウンチェックボックスウィジェットを追加し、ウィジェット名にareaを、データ辞書にデータベーステーブルを、データベースにFRDemoJPを、データベーステーブル選択にOrdersを、実際値の列名と表示値の列名ともShipPrefectureを、戻り値タイプに配列に選択します。(下図)
3.クエリウィジェットを追加します(下図):
4.パラメータパネルの空白部分をクリックし、右側の属性でクエリをクリックする前に内容を表示しないにチェックを入れてください(下図)。
4.パラメータが空白の場合は全選択として扱う
パラメータを定義する方法は2つあるため、パラメータが空白のときにすべての値を選択する方法を個別に紹介します。
三.方法一:データセットパラメータを使用する
1.ロップダウンボックスウィジェットareaの戻り値タイプを文字列に設定し、区切り文字を「,」に設定します。
2.データセットのSQLを以下に変更します:
SELECT * FROM Orders where 1=1 ${if(len(area) == 0,"","and ShipPrefecture in ('" + area + "')")}
注:where1=1は条件が常に真であることを意味し、後続のパラメータ条件がない場合にwhereが作動することになり、エラーを防止します。len(area)==0は、パラメータareaが空白であることを意味します。"and 都道府県='"+area+"'" の areaはパラメータ値を取得することを意味し、'+'は文字列連結記号を示します。
${if(len(area) == 0,"","and ShipPrefecture = '" + area + "'")} は、パラメータareaが空白の場合、フィルタリングは実行されない。空白でない場合、都道府県はパラメータ値と等しくなることを意味します。
ここでのパラメータ名areaは、パラメータパネルに追加されたドロップダウンボックスareaウィジェット名と同じです。つまり、パラメータウィジェットをデータセットパラメータに関連づけることにより、パラメータフィルタリングを実現します。
四.方法二:帳票パラメータを使用する
1.セルA2をダブルクリックし、フィルターボタンを選択して、セルA2にフィルター条件を追加します:都道府県は以下の式に含まれます:if(len($area)==0,nofilter,$area)
注:nofilterは、フィルターしないことを意味します。if(len($area)==0,nofilter,$area) は、パラメータareaが空白の場合、濾過しない。空白でない場合、パラメータ値で濾過することを意味します。if(len($province)==0,nofilter,$province)意味は同じです。
ドロップダウンボックスウィジェットの戻り値タイプ及び区切り文字を変更する必要がなく、デフォルト戻り値タイプ-データセットを利用することができます。
五.プレビュー
1.PC端末プレビュー
パラメータ値を入力せずに改ページプレビューをクリックし、クエリを直接クリックすると、効果は上図のようになります。
2.モバイル端末プレビュー