障害およびユーザーのクエリーのビルド

次のコードは、障害およびユーザーに関する条件を使用して、データベースからレコードを取り出すクエリーをビルドする方法を示します。例では QueryDef および QueryFilterNode オブジェクトと、構造化照会言語 (SQL) クエリーを使用します。

注: 以下のいずれのコードも、フィールド選択リスト フックフィールド検証フック などの、フックで使用できます。しかし、セッション オブジェクトを手動で作成して、データベースにログオンする場合 (セッション オブジェクトを取得する代わりに) は、外部アプリケーションにこのコードを組み込むこともできます。

VBScript

次の例は、障害 レコード タイプに属するすべての障害を選択します。

set session = GetSession

set querydef = session.BuildQuery("defect") 
querydef.BuildField("id") 
querydef.BuildField("headline") 


set resultset = session.BuildResultSet(querydef) 

VBScript

次の例は、これらの条件に一致する障害を選択します。

これは、次のように変換されます。

(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

次の例は、これらの条件に一致する障害を選択します。

これは、次のように変換されます。

((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

以下の例は、特定のグループ内のユーザーを見つけます (ソフトウェア エンジニアリング、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

次の例は、ユーザー John Doe (johndoe) がレコードをサブミットする場合のデフォルトの設定を見つけます。 この例では、特定のフィールド値は defect という名前のデータベース テーブルにあります (defect レコード タイプの場合)。このコードは、SQL クエリーをビルドします。

set session = GetSession

set resultset = session.BuildSQLQuery("select project, component,_
                 severity from defect where user='johndoe'") 

フィードバック