결함 및 사용자용 조회 빌드

다음 코드 단편은 결함 및 사용자에 대한 기준을 사용하여 데이터베이스에서 레코드를 페치하는 조회를 빌드하는 방법을 보여줍니다. 샘플에서는 SQL 조회 이외에 QueryDef 및 및 QueryFilterNode 오브젝트를 사용합니다.

주: 필드 선택사항 목록 후크 또는 필드 유효성 검증 후크 등과 같은 후크에서 다음 코드 단편을 사용할 수 있습니다. 하지만 Session 오브젝트를 수동으로 작성하고 데이터베이스에 로그온(Session 오브젝트를 가져오는 대신)하는 경우에는 이 코드를 외부 애플리케이션에 포함시킬 수도 있습니다.

VBScript

다음 예제는 defect 레코드 유형에 속하는 모든 결함을 선택합니다.

set session = GetSession

set querydef = session.BuildQuery("defect") 
querydef.BuildField("id") 
querydef.BuildField("headline") 


set resultset = session.BuildResultSet(querydef) 

VBScript

다음 예제는 이 기준에 일치하는 결함을 선택합니다.

이것은 다음과 같이 변환됩니다.

(assigned_to = "johndoe") AND (planned_release = "beta2")

set session = GetSession

set querydef = session.BuildQuery("defect") 
querydef.BuildField("id") 
querydef.BuildField("headline") 


set operator = querydef.BuildFilterOperator(AD_BOOL_OP_AND)
operator.BuildFilter "assigned_to", AD_COMP_OP_EQ, "johndoe" 
operator.BuildFilter "planned_release", AD_COMP_OP_EQ, "beta2"


set resultset = session.BuildResultSet(querydef) 

VBScript

다음 예제는 이 기준에 일치하는 결함을 선택합니다.

이것은 다음과 같이 변환됩니다.

((planned_release = "beta") AND (state != resolved OR verified) AND (priority = 1 OR 2)) OR (assigned_to = lihong OR gonzales OR nougareau OR akamoto)

set session = GetSession

Dim users 
ReDim users(3) ' This sets up an array of four elements 
users(0) = "lihong"
users(1) = "gonzales"
users(2) = "nougareau"
users(3) = "akamoto" 

Dim priority_levels
ReDim priority_levels(1) ' This sets up an array of two elements 
priority_levels(0)  = "1"
priority_levels(1)  = "2"

Dim states
ReDim states(1)
states(0)  = "resolved"
states(1)  = "verified"

set querydef = session.BuildQuery("defect") 
querydef.BuildField("id") 
querydef.BuildField("component") 
querydef.BuildField("priority") 
querydef.BuildField("assigned_to.login_name") 
querydef.BuildField("headline") 

set operator = querydef.BuildFilterOperator(AD_BOOL_OP_OR)
set operator2 = operator.BuildFilterOperator(AD_BOOL_OP_AND)
operator2.BuildFilter "planned_release", AD_COMP_OP_EQ, "beta"
operator2.BuildFilter "state", AD_COMP_OP_NOT_IN, states 
operator2.BuildFilter "priority", AD_COMP_OP_IN, priority_levels 

operator.BuildFilter "assigned_to",AD_COMP_OP_IN, users 

set resultset = session.BuildResultSet(querydef) 

Perl

# ((planned_release = "beta") AND (state != resolved OR verified) AND 

(priority = 1 OR 2))
# OR
# (assigned_to = lihong OR gonzales OR nougareau OR akamoto)

$session=$entity->GetSession();
@users = ("lihong", "gonzales", "nougareau", "akamoto");
@priority_levels = ("1", "2");
@states = ("resolved", "verified");
@planned_release = ("beta");

$querydef = $session->BuildQuery("defect"); 
$querydef->BuildField("id"); 
$querydef->BuildField("component"); 
$querydef->BuildField("priority"); 
$querydef->BuildField("headline"); 

$operator = $querydef->BuildFilterOperator($CQPerlExt::CQ_BOOL_OP_OR);
$operator2 = $operator->BuildFilterOperator($CQPerlExt::CQ_BOOL_OP_AND);
$operator2->BuildFilter ("planned_release", $CQPerlExt::CQ_COMP_OP_EQ, 
\@planned_release);
$operator2->BuildFilter ("state", $CQPerlExt::CQ_COMP_OP_NOT_IN, \@states); 
$operator2->BuildFilter ("priority", $CQPerlExt::CQ_COMP_OP_IN, 
\@priority_levels); 

$operator->BuildFilter ("assigned_to",$CQPerlExt::CQ_COMP_OP_IN, \@users);

$resultset = $session->BuildResultSet(querydef); 

VBScript

다음 예제는 특정 그룹(소프트웨어 엔지니어링, sw_eng)에서 사용자를 찾습니다.

set session = GetSession

set querydef = session.BuildQuery("users") 
querydef.BuildField("login_name") 


set operator = querydef.BuildFilterOperator(AD_BOOL_OP_AND)
operator.BuildFilter "group.name", AD_COMP_OP_EQ, "sw_eng" 


set resultset = session.BuildResultSet(querydef) 

VBScript

다음 예제는 사용자 John Doe(johndoe)가 레코드를 제출할 때의 기본 설정을 찾습니다. 이 예제에서 특정 필드 값은 defect라는 데이터베이스 테이블에 있습니다(레코드 유형 defect). 이 코드는 SQL 조회를 빌드합니다.

set session = GetSession

set resultset = session.BuildSQLQuery("select project, component,_
                 severity from defect where user='johndoe'") 

피드백