<CSP:SEARCH>
Synopsis
<CSP:SEARCH>
属性
一般的な属性
属性 | 説明 | 値 |
---|---|---|
CAPTION | 標準の検索ページで表示される文字列。 | 文字列。 |
CLASSNAME | 必須項目。検索を実行するクラス名。テーブル名ではないことに注意してください。 | 文字列。 |
FEATURES | ポップアップ検索ウィンドウを表示する JavaScript 関数 window.open に渡される features 引数の値。 | 文字列。 |
FORM | 検索に関連付けるフォームの名前。検索ページを呼び出したページの結合フォームを更新するために使用します。 | 文字列。 |
IDNAME | 非推奨。検索対象のオブジェクトの ID フィールド名。 | 文字列。 |
MAXROWS | 検索結果テーブルに表示する最大行数を指定。既定は 100 です。 | 整数 |
NAME | 検索関数名。既定名は search です。 | 有効な JavaScript 関数名 |
NODISPLAY | ORDER 属性と併用すると、ORDER="City" OPTIONS="NODISPLAY" などの検索ページが表示されたときに、クエリが自動的に実行されないようにします。 | 文字列。 |
OBJID | オブジェクト識別子の値。最初のページに存在し、オブジェクトを識別します。検索ページを実行したページの結合フォームを更新するために使用します。 | 文字列。 |
OBJIDATTR | 関連するフォームのオブジェクト識別子の属性名。既定は OBJID です。 | 文字列。 |
ONSELECT | 検索ページを実行したページで使用するオプションの JavaScript 関数。検索ページでアイテムが選択された後に実行されます。 | JavaScript 関数名 |
OPTIONS | コンマで区切られた検索ウィンドウのオプション・リスト。これには、popup、clearbtn、display、nodisplay、predicates、sortbox、leaveopen、およびshowcount が含まれます。 | 文字列。 |
ORDER | 検索結果のソートに使用するフィールドを propname|direction の形式で指定し、コンマで区切って記述したリスト。propname はプロパティ名、direction は ASC (昇順) または DESC (降順) です。direction が指定されない場合、SELECT または WHERE 属性の既定が使用されます。ORDER が指定されている場合、検索ウィンドウが表示されるとクエリが自動的に実行されます。この自動実行は、ORDER="City" OPTIONS="NODISPLAY" などの OPTIONS の NODISPLAY を指定することで無効にできます。 | 文字列。 |
PREDICATES | コンマで区切られた検索述語 (比較演算子) のリスト。WHERE リストの各フィールドに対応し、各フィールドに対して使用します。 | 文字列。 |
SELECT | 検索結果に表示するフィールドを propname|direction の形式で指定し、コンマで区切って記述したリスト。propname はプロパティ名、alias はオプションのエイリアス、direction はオプションの既定の方向で ASC (昇順) または DESC (降順) です。ORDER 属性で direction が指定されていない場合は、ここでの指定が使用されます。SELECT が指定されていない場合、WHERE 属性が SELECT リストとして使用されます。 | 文字列。 |
SHOWSQL | デバッグに対処するために、検索に使用する SQL を表示します。 | 0、1 |
STARTVALUES | フォームから初期値を生成するフィールドのコンマで区切られたリスト。 | 文字列。 |
TARGET | 検索結果ウィンドウでリンクするページを指定。既定は、検索を呼び出すページです。 | 文字列。 |
WHERE | propname|direction の形式で検索条件として使用される、コンマで区切られたフィールド・リスト。propname はプロパティ名、alias はオプションのエイリアス、direction はオプションの既定の方向で ASC (昇順) または DESC (降順) です。ORDER 属性で指定されていないときに使用します。 | 文字列。 |
概要
CSP:SEARCH タグは、CSP 検索ページを実行するクライアント側の JavaScript 関数を定義します。JavaScript 関数名は、NAME 属性値で指定します。
Caché Web フォーム・ウィザードは、生成したページ内に CSP:SEARCH タグを記述します。これにより、生成されたページからデータベースの検索を実行できます。CSP:SEARCH タグの属性を使用して、フォーム・ウィザードで生成されたページ内で、検索ページの振る舞いをカスタマイズできます。また、フォーム・ウィザード以外で構築されたページから CSP 検索ページを実行するためにも使用できます。CSP 検索ページがアプリケーションに適切でない場合は、(CSP を使用する) 独自の検索ページを実装し、実行できます。
CSP 検索ページ
CSP は、%CSP.PageLookupOpens in a new tab クラス経由で実装される一般的な検索ページを提供します。この検索ページでは、ユーザが値を入力すると、SQL クエリを実行し、HTML テーブル内に結果を表示します。通常、ユーザは、オブジェクトに結合されたフォームを含む CSP ページから、検索ページを呼び出します。ユーザが、検索ページに表示されている結果からオブジェクトを選択すると、フォーム・ページは更新され、オブジェクトのデータを表示します。
CSP ページ内では、CSP:SEARCH タグを使用して、CSP 検索ページを実行する JavaScript 関数を自動的に定義できます。ボタンを押すなどクライアント側のイベントに応答して、この関数を実行できます。
例えば、以下は JavaScript 関数 my_search を定義しています。
<CSP:SEARCH NAME="my_search" CLASSNAME="MyApp.Person" WHERE="Name,Home_City">
同じページ内で、ボタンを押すなどクライアント側のイベントに応答して、この関数を実行できます。
<INPUT TYPE="button" NAME="Search" VALUE="Search" ONCLICK="my_search();">
ユーザが [検索] ボタンを押すと、CSP 検索ページが表示され、CSP:SEARCH タグの CLASSNAME 属性と WHERE 属性で指定した、Name あるいは Home.City で MyApp.Person のインスタンスが検索されます。
検索ページ・クエリの指定
CSP 検索ページは、CSP:SEARCH タグの属性値を元に、SQL クエリを作成して実行します。
CLASSNAME
必須項目の CLASSNAME 名属性は、実行されるクエリ、つまり SQL クエリの FROM 節に対し、クラス名を指定します。これは、SQL テーブル名ではなく クラス名 であることに注意してください。クラス名と SQL 名は、異なる場合があります。
WHERE
WHERE 属性には、コンマで区切られた 1 つ以上のフィールド名 (プロパティ名ではなく SQL 名。プロパティ名と SQL 名は異なる場合があります) のリストがあり、(SQL クエリの WHERE 節にあるフィールドの) 検索条件として使用されます。検索ページには、各フィールドに対しユーザが検索値を入力できるフィールドを表示します。
WHERE 属性を省略した場合、検索ページは、検索フィールドにオブジェクト ID 列を使用します。SELECT 属性を省略した場合、WHERE 属性は SQL クエリの SELECT リストも指定します。
SELECT 属性同様、WHERE 属性内では、フィールド名として、以下のような式を使用できます。以下はその概要です。
式 | 例 |
---|---|
フィールドに対するエイリアス | WHERE="FName As FirstName" |
埋め込みオブジェクト内のフィールド | WHERE="Home.City" |
参照オブジェクト内のフィールド | WHERE="Company->Name" |
以下は、WHERE 属性の使用例です。
<!-- Define a search function -->
<CSP:SEARCH NAME="mySearch" CLASSNAME="Sample.Person"
WHERE="Name,SSN,Spouse->Name">
<!-- invoke the search function -->
<FORM>
<INPUT TYPE="button" VALUE="Search" ONCLICK="mySearch();">
</FORM>
WHERE 節のフィールドで使用する条件は、PREDICATES 属性により指定します。
以下は、エイリアスを持つ WHERE 属性の使用例です。ISCLName というプロパティと、ISCLFName という別のプロパティを持つクラスがあると仮定します。これらのプロパティを "ISCLName” および ”ISCLFName” の代わりにそれぞれ "Last Name" および ”First Name” として検索ページに表示する場合、以下のようにエイリアスを指定します。
<csp:search NAME="my_search" CLASSNAME="Test.NewClass4"
WHERE="ISCLName Last Name, ISCFName First Name">
SELECT
検索結果に表示される値を制御するには、SELECT 属性を使用します。これには、検索クエリの SELECT リストとして使用する、コンマで区切られた 1 つ以上の SQL フィールド名が含まれます。
例えば、以下のようになります。
<CSP:SEARCH NAME="mySearch" CLASSNAME="Sample.Person"
WHERE="Name" SELECT="Name,SSN,Spouse->Name Spouse,Home.City City">
この場合、検索ページの結果は、SELECT 属性で指定した 4 列を表示します。
Name | SSN | Spouse | City |
WHERE 属性では、Spouse->Name のように、-> (参照) 構文を使用して関連するクラスで定義されているプロパティを参照できます。埋め込みオブジェクトのプロパティを参照するには、ドット構文 Home.City を使用します。エイリアス (列のヘッダとして使用される名前) を定義するには、Name Alias のようにフィールド名の後にエイリアスを記述します。
SELECT 属性を省略する場合、WHERE 属性で指定されるフィールドを使用します。
PREDICATES
PREDICATES 属性を使用して、検索ページが WHERE 属性のフィールドを使用する方法を制御します。この属性には、コンマで区切られた演算子名のリスト (以下の表参照) を含みます。これは WHERE 属性にリストされたフィールドに対応します。
PREDICATES 属性を省略する場合、検索ページは、すべての文字列プロパティには %startswith を、その他のプロパティには = を使用します。PREDICATES リスト内に対応する項目を持たない WHERE リスト内の任意の項目には、既定の演算子を使用します。
以下の比較演算子を、PREDICATES 属性内で使用できます。
演算子 | 以下と一致 |
---|---|
%startswith | ユーザ入力で開始するすべての値。文字列の場合のみ有効です。 |
= | ユーザ入力と等しいすべての値 |
<> | ユーザ入力と等しくないすべての値 |
> | ユーザ入力より大きいすべての値 |
< | ユーザ入力より小さいすべての値 |
between | ユーザが入力した 2 つの値の間にあるすべての値。2 つの値はアンパサンド (&) で区切ります。 |
contains | ユーザ入力を含むすべての値。文字列の場合のみ便利です。 |
select | ドロップ・ダウン・リストの選択肢と等しいすべての値 |
以下は、PREDICATES 属性の使用例です。
<CSP:SEARCH NAME="mySearch" CLASSNAME="Sample.Person"
WHERE="Name,SSN,Spouse->Name"
PREDICATES="%startswith,=,contains"
>
この場合、検索ページは、Name が値で始まり、SSN が値と等しく、Spouse.Name が値を持つ Sample.PersonOpens in a new tab のすべてのインスタンスを検索します。
select 演算子が述語のリストに存在する場合、対応するフィールドの候補の値がすべて検索ページのドロップダウン・リストに表示されます。例えば、以下のようになります。
<CSP:SEARCH NAME="mySearch" CLASSNAME="Sample.Employee"
WHERE="Name,Company->Name Company"
PREDICATES="%startswith,select"
>
この場合、検索ページはすべての Company Name を含むドロップダウン・リストを表示します。リストは、実行時に適切な SQL クエリを発行することにより生成されます。
SELECT %ID, Name FROM Sample.Company ORDER BY Name
検索ページは、ユーザが選択した値を使用して、最も効率的な方法でメインの検索を実行します。例えば、この場合、(JOIN ではなく) 任意の Company ID 値で Sample.EmployeeOpens in a new tab のすべてのインスタンスを検索します。
多数の (場合によっては何千もの) 値をとる可能性があるフィールドに対しては、select 演算子を使用しないでください。
ORDER
ORDER 属性を使用して、検索結果を最初に並べる順番を制御できます。これには、検索クエリの ORDER BY 節として使用される、コンマで区切られた 1 つ以上の SQL フィールド名が含まれます。
SHOWSQL
アプリケーションのトラブルシューティングには、CSP 検索ページで使用している実際の SQL クエリが役に立つ場合があります。これを実行するには、SHOWSQL 属性を 1 に設定します。これは、検索ページのクエリ結果および SQL クエリのテキストを表示します。
検索ページの機能を指定
CSP:SEARCH タグを使用して、CSP 検索の外観と振る舞いを調整できます。以下はその例です。
OPTIONS
OPTIONS 属性により、CSP 検索ページの特徴を制御できます。この値は、以下を 1 つ以上含む、コンマで区切られたリストです。
オプション | 説明 |
---|---|
clearbtn | 検索ページに [クリア] ボタンを含みます。このボタンは、検索基準フィールドの内容をリセットします。 |
display | 検索ページは、最初に表示されたときに、結果リストを表示します。 |
leaveopen | 検索ページが存在する場合、ユーザがページを選択すると、その検索ページは開いたままになります。 |
nodisplay | ORDER 属性が存在する場合、検索ウィンドウが表示されてもクエリは自動的に実行されません。 |
popup | 検索ページは、ポップアップ・ウィンドウとして表示されます。例として、CSP サンプル (popform.cspOpens in a new tab) を参照してください。FEATURES 属性で、ポップアップ・ウィンドウのサイズや外観を変更できます。 |
predicates | 検索ページは、検索条件入力ボックスの横に、(startswith や greater than など) 検索述語のコンボボックスを表示します。 |
showcount | 検索ページに、クエリで取得されたレコード数を表示します。 |
sortbox | 検索ページに、ユーザが結果をどのようにソートするかを選択できるラジオ・ボタンを表示します。 |
例えば、以下の検索関数の定義は、ソートを指定するラジオ・ボタン付きのポップアップ検索ページを実行します。
<!-- Define a search function -->
<CSP:SEARCH NAME="mySearch" CLASSNAME="Sample.Person"
WHERE="Name,SSN" OPTIONS="popup,sortbox">
<!-- invoke the search function -->
<FORM>
<INPUT TYPE="button" VALUE="Search" ONCLICK="mySearch();">
</FORM>
CAPTION
CAPTION 属性により、検索ページの一番上に表示される表題を変更できます。例えば、以下のようになります。
<!-- Define a search function -->
<CSP:SEARCH NAME="mySearch" CLASSNAME="Sample.Person"
WHERE="Name,SSN" CAPTION="This is my Search Page:">
<!-- invoke the search function -->
<FORM>
<INPUT TYPE="button" VALUE="Search" ONCLICK="mySearch();">
</FORM>
FEATURES
FEATURES 属性により、ポップアップ検索ウィンドウのサイズと外観を指定できます。CSP は、JavaScript 関数 window.open を呼び出して、ポップアップ検索ウィンドウを生成します。この関数は、新規ウィンドウの機能を制御する引数 features を取ります。CSP は、features 引数に FEATURES 属性の値を使用します。
FEATURES 属性には、コンマで区切られた特性値のリストが含まれます。スペースや空白は使用できません。リストの各要素ごとに形式があります。
feature[=value]
有効な特性名に関するリストは、JavaScript 関数リファレンスの Window.open メソッドを参照してください。
例えば、以下は、初期の高さと幅が 350 ピクセルのポップアップ検索ページの定義です。
<!-- Define a search function -->
<CSP:SEARCH NAME="mySearch" CLASSNAME="Sample.Person" WHERE="Name,SSN"
OPTIONS="popup" FEATURES="height=350,width=350">
<!-- invoke the search function -->
<FORM>
<INPUT TYPE="button" VALUE="Search" ONCLICK="mySearch();">
</FORM>
MAXROWS
MAXROWS 属性では、検索結果テーブルで表示する最大行数を指定できます。