I seguenti frammenti di codice illustrano come creare query che prelevano i record dal database utilizzando criteri relativi a difetti e utenti. Gli esempi utilizzando gli oggetti QueryDef e QueryFilterNode, nonché una query SQL (Structured Query Language).
Il seguente esempio seleziona tutti i difetti che appartengono al record di tipo defect.
set session = GetSession
set querydef = session.BuildQuery("defect")
querydef.BuildField("id")
querydef.BuildField("headline")
set resultset = session.BuildResultSet(querydef)
Questo esempio seleziona i difetti che corrispondono ai criteri riportati di seguito:
Questo si converte in:
(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)
Questo esempio seleziona i difetti che corrispondono ai criteri riportati di seguito:
Questo si converte in:
((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);
Il seguente esempio individua gli utenti in un gruppo determinato (ingegneria del software, 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)
Il seguente esempio individua le impostazioni predefinite quando un utente, John Doe (johndoe) inoltra un record. In questo esempio, alcuni valori campo si trovano in una tabella database denominata defect (per il record di tipo defect). Questo codice crea una query SQL.
set session = GetSession
set resultset = session.BuildSQLQuery("select project, component,_
severity from defect where user='johndoe'")