Los fragmentos de código siguientes muestran cómo compilar consultas que obtienen registros de la base de datos utilizando criterios sobre defectos y usuarios. En los ejemplos se utilizan los objetos QueryDef y QueryFilterNode, así como una consulta SQL (Lenguaje de consulta estructurada).
En el ejemplo siguiente se seleccionan todos los defectos que pertenecen al tipo de registro defect.
set session = GetSession
set querydef = session.BuildQuery("defect")
querydef.BuildField("id")
querydef.BuildField("headline")
set resultset = session.BuildResultSet(querydef)
En el ejemplo siguiente se seleccionan defectos que coinciden con estos criterios:
Lo que se convierte en:
(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)
En el ejemplo siguiente se seleccionan defectos que coinciden con estos criterios:
Lo que se convierte en:
((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 atates
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);
En el ejemplo siguiente se busca a los usuarios de un grupo determinado (ingeniería de 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)
En el ejemplo siguiente se buscan los valores predeterminados para cuando un usuario, John Doe (johndoe), envía un registro. En este ejemplo, algunos valores de campo están en una tabla de base de datos denominada defect (para el tipo de registro defect). Este código compila una consulta SQL.
set session = GetSession
set resultset = session.BuildSQLQuery("select project, component,_
severity from defect where user='johndoe'")