다음 코드 단편은 결함 및 사용자에 대한 기준을 사용하여 데이터베이스에서 레코드를 페치하는 조회를 빌드하는 방법을 보여줍니다. 샘플에서는 SQL 조회 이외에 QueryDef 및 및 QueryFilterNode 오브젝트를 사용합니다.
다음 예제는 defect 레코드 유형에 속하는 모든 결함을 선택합니다.
set session = GetSession
set querydef = session.BuildQuery("defect")
querydef.BuildField("id")
querydef.BuildField("headline")
set resultset = session.BuildResultSet(querydef)
다음 예제는 이 기준에 일치하는 결함을 선택합니다.
이것은 다음과 같이 변환됩니다.
(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)
다음 예제는 이 기준에 일치하는 결함을 선택합니다.
이것은 다음과 같이 변환됩니다.
((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)
# ((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);
다음 예제는 특정 그룹(소프트웨어 엔지니어링, 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)
다음 예제는 사용자 John Doe(johndoe)가 레코드를 제출할 때의 기본 설정을 찾습니다. 이 예제에서 특정 필드 값은 defect라는 데이터베이스 테이블에 있습니다(레코드 유형 defect). 이 코드는 SQL 조회를 빌드합니다.
set session = GetSession
set resultset = session.BuildSQLQuery("select project, component,_
severity from defect where user='johndoe'")