Clasificación de un conjunto de resultados

Puede utilizar métodos del objeto QueryFieldDef para personalizar el orden de clasificación de un conjunto de resultados tal como se muestra en el ejemplo siguiente. En este ejemplo se clasifica la prioridad en el campo de ID, y el orden de clasificación es ascendente.

Perl

use CQPerlExt;

#Start a Rational ClearQuest session

#$AdminSession= CQAdminSession::Build();

$SessionObj = CQSession::Build();



$dbsetname = "CQMS.SAMPL.HOME";

#Refresh list of accessible databases

$databases = $SessionObj->GetAccessibleDatabases("MASTR", "", $dbsetname);



#Log into a database

$SessionObj->UserLogon("admin","","SAMPL",$dbsetname);



#Create a Query

$querydef = $SessionObj->BuildQuery("defect") ;

$querydef->BuildField("id") ;

$querydef->BuildField("headline") ;

$querydef->BuildField("owner.login_name") ;

$querydef->BuildField("submit_date") ;

#Create the queryfilternode object:

# where (state not in closed AND (id = 1 OR id = 2))

$where = $querydef->BuildFilterOperator($CQPerlExt::CQ_BOOL_OP_AND);

@states = ("closed");

$where->BuildFilter("state", $CQPerlExt::CQ_COMP_OP_NEQ, \@states);

$subor = $where->BuildFilterOperator($CQPerlExt::CQ_BOOL_OP_OR);

@id1 = ("SAMPL00000001");

$subor->BuildFilter("id", $CQPerlExt::CQ_COMP_OP_EQ, \@id1);

@id2 = ("SAMPL00000002");

$subor->BuildFilter("id", $CQPerlExt::CQ_COMP_OP_EQ, \@id2);



# Get the collection QueryFieldDef objects

$queryfielddefs = $querydef->GetQueryFieldDefs();

# Select the id field and set the sort type and order
# For VBScript, use the Item method, which takes a numeric index or a name

$idfield = $queryfielddefs->ItemByName("id");

$idfield->SetSortType($CQPerlExt::CQ_SORT_DESC);

# this is for if you have multiple sort columns, which takes precedence:

$idfield->SetSortOrder(1);

# Select the submit_date field and set the week function on it

$datefield = $queryfielddefs->ItemByName("submit_date");

$datefield->SetFunction($CQPerlExt::CQ_DB_WEEK_FUNC);



$resultset = $SessionObj->BuildResultSet($querydef);

$ct = $resultset->ExecuteAndCountRecords();

for ($i = 0; $i < $ct; $i++) {

   $resultset->MoveNext();

   print $resultset->GetColumnValue(1);

   print " ";

   print $resultset->GetColumnValue(2);

   print " ";

   print $resultset->GetColumnValue(3);

   print " ";

   print $resultset->GetColumnValue(4);

   print "\n";

}

CQAdminSession::Unbuild($AdminSession);

CQSession::Unbuild($SessionObj);

            

VBScript

Set MyQuery = GetSession.BuildQuery("Users")
MyQuery.BuildField("login_name") ' Column 1
MyQuery.BuildField("fullname") ' Column 2
set MyField = MyQuery.QueryFieldDefs.Item("login_name")
MyField.SortType AD_SORT_ASC
MyField.SortOrder 1
set FilterOp = MyQuery.BuildFilterOperator(AD_BOOL_OP_AND)
FilterOp.BuildFilter "Groups.Name", AD_COMP_OP_EQ, "Testers"
set MyResults = GetSession.BuildResultSet(MyQuery)
MyResults.Execute
While MyResults.MoveNext = AD_SUCCESS
    Line = Line & MyResults.GetColumnValue(1) & " : " & _
                  MyResults.GetColumnValue(2) & VBCrlf
wend

Comentarios