BuildFilterOperator

설명

조회에 대한 최상위 레벨 QueryFilterNode 오브젝트를 작성합니다.

이 QueryDef 메소드는 조회 표현식 빌드의 시작점입니다. 조회 표현식의 첫 번째 필터를 얻으려면 이 메소드를 호출해야 합니다. 이 필터에서 원하는 조건을 지정할 추가적인 필터를 생성할 수 있습니다. 조회 표현식은 부울 연산자의 트리로 생성됩니다. 트리가 꼭 2진일 필요는 없습니다. 필터 노드에 3개 이상의 조건을 추가할 수 있습니다.

구문

VBScript

querydef.BuildFilterOperator bool_operator

Perl

$querydef->BuildFilterOperator(bool_operator);
ID
설명
querydef
QueryDef 오브젝트입니다.
bool_operator
값이 BoolOp 상수 중 하나인 Long입니다.
Return value
새로 작성된 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 오브젝트를 참조하십시오.

노드에 하나의 조건만 포함된 경우에는 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); 

피드백