다음 코드 단편은 결함 및 사용자에 대한 기준을 사용하여 데이터베이스에서 레코드를 페치하는 조회를 빌드하는 방법을 보여줍니다. 샘플에서는 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)