機械翻訳について

問合せ結果のソート順の定義

setSortBy()関数は、1つの文字列引数を取ります。その値は、オブジェクト内の1つ以上のフィールド名のカンマ区切りリストです。

ビュー・オブジェクト問合せ結果のソート順序を定義するには、executeQuery()メソッドをコールする前に、操作しているビュー・オブジェクト・インスタンスでsetSortBy()メソッドをコールして結果を取得します。

次の例は、このメソッドを使用して単一のフィールドでソートする方法を示しています:

def vo = newView('TroubleTicket')
// Use object function to simplify filtering by agent
applyViewCriteriaForSupportAnalyst(vo, analystId)
vo.setSortBy('Priority')
vo.executeQuery()
while (vo.hasNext()) {
  def curRow = vo.next()
  // Work with current row curRow here
}

デフォルトでは、ソート順序は「昇順」になりますが、リスト内のフィールド名の後に空白で区切られたascまたはdescキーワードを使用して、意図を明示できます。

次の例では、コールバック数で降順にソートする方法を示します。

def vo = newView('TroubleTicket')
// Use object function to simplify filtering by customer
applyViewCriteriaForCustomerCode(vo, custCode)
vo.setSortBy('NumberOfCallbacks desc')
vo.executeQuery()
while (vo.hasNext()) {
  def curRow = vo.next()
  // Work with current row curRow here
}

setSortBy()メソッドでは、NULL値のソート方法は指定できません。 かわりに、NULL値はソート順が昇順か降順かによってソートされます:

  • ソート順が昇順の場合、NULL値は最後に表示されます
  • ソート順が降順の場合、NULL値は最初に表示されます
ノート: 新しい行の作成中にsetSortBy()が呼び出された場合、その新しい行はソートの一部ではなく、常に最初にリストされます。

前述のように、文字列は2つ以上のフィールドのカンマ区切りリストでもかまいません。 この例では、並べ替え順を明示的に指定するなど、複数のフィールドで並べ替える方法を示します。

def vo = newView('TroubleTicket')
// Use object function to simplify filtering by customer
applyViewCriteriaForCustomerCode(vo, custCode)
// Sort ascending by Priority, then descending by date created
vo.setSortBy('Priority asc, CreationDate desc')
vo.executeQuery()
while (vo.hasNext()) {
  def curRow = vo.next()
  // Work with current row curRow here
}

デフォルトでは、テキスト・フィールドでソートする場合、その値は大/小文字を区別してソートされます。 大文字'B'で始まる'Blackberry'などの値は、小文字'a'の'apple'のような値の前にソートされます。 フィールドの値を大文字と小文字を区別せずにソートするように指定するには、次の例に示すように、リスト内のフィールド名をUPPER()関数で囲みます。

def vo = newView('TroubleTicket')
// Use object function to simplify filtering by customer
applyViewCriteriaForCustomerCode(vo, custCode)
// Sort case-insensitively by contact last name, then by priority
vo.setSortBy('UPPER(ContactLastName),Priority')
vo.executeQuery()
while (vo.hasNext()) {
  def curRow = vo.next()
  // Work with current row curRow here
}
ヒント: 名前を指定して計算式フィールドまたは動的選択フィールドでソートすることは可能ですが、問合せによって少数の行のみが返されることを保証できるかぎり、ソートしないでください。 式フィールドまたは動的選択リストでのソートはメモリー内で実行する必要があるため、大量の行セットでのソートは非効率的です。