BuildFilter

설명

비교 피연산자를 노드에 추가합니다.

이 메소드에 의해 작성되는 피연산자는 필드 이름, 비교 연산자 및 값으로 구성됩니다. 조회가 실행될 때 필드의 값은 제공된 비교 연산자를 사용하여 지정된 값과 비교됩니다. 비교의 결과, 노드가 자체 부울 연산에서 사용하는 부울 값이 나옵니다.

value 인수는 값의 배열을 지정할 수 있도록 해주는 VBScript Basic 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_NULLOP_IS_NOT_NULL을 포함하여 모든 비교 연산자에 세 번째 인수가 필요합니다. 예를 들어, 다음과 같습니다.
$operator->BuildFilter("customer_priority", $CQPerlExt::CQ_COMP_OP_IS_NOT_NULL, [""]);
$operator->BuildFilter("customer_priority", $CQPerlExt::CQ_COMP_OP_IS_NULL, [""]);

QueryDef 오브젝트의 BuildFilterOperator 메소드에 주어진 예제도 참조하십시오.

조회 표현식은 2진 트리로 제한됩니다. 이 메소드는 특정 QueryFilterNode 오브젝트에 대해 원하는 횟수만큼 호출할 수 있습니다.

field_name 인수에 대한 올바른 값을 얻으려면 조회가 기반으로 하는 EntityDef 오브젝트의 GetFieldDefNames 메소드를 호출하십시오.

구문

VBScript

node.BuildFilter field_name,comparison_operator,value 

Perl

$node->BuildFilter(field_name, comparison_operator, value); 
ID
설명
node
조회 표현식의 한 노드를 나타내는 QueryFilterNode 오브젝트입니다.
field_name
현재 QueryDef 오브젝트가 기반으로 하는 EntityDef 오브젝트의 올바른 필드 이름이 포함된 문자열입니다.
comparison_operator
값이 CompOp 열거 상수 중 하나인 Long입니다.
value
지정된 필드에서 찾으려고 하는 값입니다.

VBScript에서는 값을 Variant 배열로 지정하십시오.

Perl에서는 값을 문자열에 대한 참조 또는 문자열 배열로 지정합니다.

Return value
없음

예제

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

피드백