BuildFilter

説明

ノードに比較オペランドを追加します。

このメソッドによって作成されるオペランドは、フィールド名、比較演算子、および値から構成されます。 クエリーが実行されると、フィールド内の値が、指定された比較演算子を使用して、指定された値と比較されます。比較により Boolean 値が生成されます。この値がノードによって、それ自体の Boolean 比較で使用されます。

value 引数は文字列の配列に対する VBScript Variant または Perl 参照で、該当する場合に、値の配列を指定できます。例えば、2007 年 12 月 1 日から 12 月 15 日までにサブミットされた障害を検出する場合は、次のフィルタを作成します。
@dateRange = ("2007-12-01", "2007-12-15");
$node->BuildFilter("submit_date", $CQPerlExt::CQ_COMP_OP_BETWEEN, ¥@dateRange);
BuildFilter メソッドは、OP_IS_NULL および OP_IS_NOT_NULL など、すべての比較演算子に対して第 3 の引数を必要とします。 次に例を示します。
$operator->BuildFilter("customer_priority", $CQPerlExt::CQ_COMP_OP_IS_NOT_NULL, [""]);
$operator->BuildFilter("customer_priority", $CQPerlExt::CQ_COMP_OP_IS_NULL, [""]);

QueryDef オブジェクトの BuildFilterOperator メソッドに説明されている例も参照してください。

クエリー式はバイナリ ツリーだけではありません。所定の QueryFilterNode オブジェクトに対してこのメソッドを必要な回数だけ呼び出すことができます。

field_name 引数に有効な値を取得するには、クエリーの基本となっていた EntityDef オブジェクトの GetFieldDefNames メソッドを呼び出します。

構文

VBScript

node.BuildFilter field_name,comparison_operator,value 

Perl

$node->BuildFilter(field_name, comparison_operator, value); 
識別子
説明
node
QueryFilterNode オブジェクト。クエリー式内の 1 つのノードを表します。
field_name
現在の QueryDef オブジェクトの基本となっている EntityDef オブジェクト内の有効なフィールドの名前を含む String。
comparison_operator
値が CompOp 列挙型定数の 1 つである Long。
value
指定されたフィールドで検出する値。

VBScript の場合、Variant 配列として値を指定します。

Perl の場合、文字列または文字列の配列の参照として値を指定します。

戻り値
なし。

VBScript

Dim dateRange
ReDim dateRange(1) ' This sets up a two element array
dateRange(0) = "2007-12-01" 
dateRange(1) = "2007-12-15" 
node.BuildFilter "submit_date", AD_COMP_OP_BETWEEN, dateRange 

Perl

#Example1
@dateRange = ("2007-12-01", "2007-12-15");
$node->BuildFilter("submit_date", $CQPerlExt::CQ_COMP_OP_BETWEEN, ¥@dateRange);
#Example2
@owner = ("jsmith");
@state = ("closed");
$queryDef = $CQsession->BuildQuery("defect");
@dbfields = ("ID","State","Headline");
foreach $field (@dbfields) {
   $queryDef->BuildField($field);
   }
$operator = $queryDef->BuildFilterOperator($CQPerlExt::CQ_BOOL_OP_AND);
$operator->BuildFilter("Owner", $CQPerlExt::CQ_COMP_OP_EQ,¥@owner);
$operator->BuildFilter("State", $CQPerlExt::CQ_COMP_OP_NOT_IN, ¥@state);

フィードバック