クエリーの最上位の QueryFilterNode オブジェクトを作成します。
この QueryDef メソッドは、クエリー式を作成する開始点です。クエリー式内の最初のフィルタを取得するには、このメソッドを呼び出す必要があります。このフィルタから、追加フィルタを構成して必要な条件を指定できます。クエリー式はブール演算子のツリーとして構成されます。ツリーは必ずしもバイナリではありません。フィルタ ノードに 2 つを超える条件を追加できます。
VBScript
querydef.BuildFilterOperator bool_operator
Perl
$querydef->BuildFilterOperator(bool_operator);
VBScript
submit_date < 01/03/2001 AND
(submitter = jjones OR submitter = clopez OR submitter = kwong)
この式では、最上位のブール演算子は AND 演算子です。このクエリー式の構成を開始するには、このメソッドを使用して最上位の演算子を持つフィルタを作成します。
set myQueryDef = sessionObj.BuildQuery("Defect")
myQueryDef.BuildField("id")
myQueryDef.BuildField("headline")
set filterNode1 = myQueryDef.BuildFilterOperator(AD_BOOL_OP_AND)
このメソッドは、ツリーのルートを構成するために一度のみ使用します。フィルタを継続して追加するには、戻された QueryFilterNode オブジェクトのメソッドを呼び出します。例えば、前の式を完了するには、次のコードを作成します。
filterNode1.BuildFilter "submit_date", AD_COMP_OP_LT, "2001-01-03"
set filterNode2 = filterNode1.BuildFilterOperator(AD_BOOL_OP_OR)
filterNode2.BuildFilter "submitter", AD_COMP_OP_EQ, "jjones"
filterNode2.BuildFilter "submitter", AD_COMP_OP_EQ, "clopez"
filterNode2.BuildFilter "submitter", AD_COMP_OP_EQ, "kwong"
さらに複雑な式を作成するには、必要によりノードをさらに再帰的に付加します。詳しくは、QueryFilterNode オブジェクト を参照してください。
ノードに含まれている条件が 1 つのみの場合、bool_operator パラメータの値は無関係です。例えば、クエリー式全体が 'submitter = jjones' の場合は、次のようにクエリー式を構成します。
' You could use either AD_BOOL_OP_AND or AD_BOOL_OP_OR for this
' expression since there is only one condition.
set filterNode = myQueryDef.BuildFilterOperator(AD_BOOL_OP_AND)
filterNode.BuildFilter 'submitter', AD_COMP_OP_EQ, "jjones"
Perl
@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);