BuildFilterOperator

説明

クエリーの最上位の QueryFilterNode オブジェクトを作成します。

この QueryDef メソッドは、クエリー式を作成する開始点です。クエリー式内の最初のフィルタを取得するには、このメソッドを呼び出す必要があります。このフィルタから、追加フィルタを構成して必要な条件を指定できます。クエリー式はブール演算子のツリーとして構成されます。ツリーは必ずしもバイナリではありません。フィルタ ノードに 2 つを超える条件を追加できます。

構文

VBScript

querydef.BuildFilterOperator bool_operator

Perl

$querydef->BuildFilterOperator(bool_operator);
識別子
説明
querydef
QueryDef オブジェクト。
bool_operator
値が BoolOp 定数の 1 つである Long。
戻り値
新規に作成された QueryFilterNode オブジェクト。

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"
注: フィルタのない (つまり、クエリー式のない) QueryDef オブジェクトを作成することができます。この場合、データベース内のすべてのレコード タイプが取得されます。多数のレコード (数千個以上) がある場合、フィルタを使用して、戻されるレコードの数を減らす必要があります。多数のレコードが戻されると、パフォーマンスに悪影響が及び、サーバー マシン上のメモリが過剰に消費されることがあります。

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);

フィードバック