Building queries for defects and users
The following code fragments show how to build queries that fetch records from the database by using criteria about defects and users. The samples use the QueryDef and QueryFilterNode objects, as well as a Structured Query Language (SQL) query.
VBScript
The following example selects all defects that belong to the defect record type.
set session = GetSession
set querydef = session.BuildQuery("defect")
querydef.BuildField("id")
querydef.BuildField("headline")
set resultset = session.BuildResultSet(querydef)
VBScript
The following example selects defects that match these criteria:
- "assigned to" user "johndoe"
- "beta2" planned release
This translates to:
(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
The following example selects defects that match these criteria:
- Planned release of beta
- Not in resolved or verified states
- Priority levels 1 or 2
- Assigned to a certain set of users
This translates to:
((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)
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
The following example finds the users in a certain group (software engineering, 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
The following example finds the default settings for when a user, John Doe (johndoe), submits a record. In this example, certain field values are in a database table named defect (for the defect record type). This code builds a SQL query.
set session = GetSession
set resultset = session.BuildSQLQuery("select project, component,_
severity from defect where user='johndoe'")