Compilación de consultas para defectos y usuarios

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).

Nota: Puede utilizar cualquiera de los fragmentos de código siguientes en un enganche como, por ejemplo, un enganche de lista de opciones de campo, o bien, un enganche de validación de campo. No obstante, también puede incluir este código en una aplicación externa si crea de modo manual el objeto Session e inicia la sesión en la base de datos (en lugar de obtener el objeto Session).

VBScript

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) 

VBScript

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) 

VBScript

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) 

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

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) 

VBScript

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'") 

Feedback