ソート

最終更新日: 2024年12月27日
R8 | R9

図1は、顧客モデルの一覧表示画面において「顧客名称」「顧客カナ」「メール」の3つの項目をソートキーと指定した例です。

画面表示時は、第一ソートキーで並びます。(この例ではアルファベット降順としています。)

ソートキーを指定した一覧表示画面

ソートキーに指定した項目は、項目名部分をクリックできます。
クリックするとその項目でソートが行われます。同じ項目をクリックすると、ソート順を反転させることができます。

図2は電子メール項目をアルファベット昇順ソートに切り替えた例です。

メール項目を昇順ソートに切り替えた

ソートキーは記憶されます

ソートキーは画面ごと、かつ、利用者ごとに記憶されます。利用を終了し、再びログオンすると、最後に指定したソートキーで並び替えられた一覧画面が表示されます。

ソートキーを初期化する

検索部に用意された「リセット」ボタンクリック後、再度「検索の実行」を行うと、再検索のタイミングで初期ソートに戻ります。

定義方法

下図の顧客モデルを例に説明します。
ここでは「顧客名称」「顧客カナ」「メール」の3つの項目にソートキーを設定します。

顧客モデルの定義

モデル項目詳細定義を開きます。各項目の「ソート順」という欄に数字を指定します。
数字の若い順に第一ソートキー、第二ソートキー... と割り当てられます。

数値の前に「マイナス」を指定すると、初期ソートルールが逆順ソートとなります。(「メール」項目)

「メール」項目を第一ソートキーかつ逆順とする
「顧客カナ」項目を第二ソートキーとする
「顧客名称」項目を第三ソートキーとする

複数のソートキーを指定した場合の動作

上の図4,5,6のように複数のソートキーを指定した場合、一覧表示画面の初期表示時は第一ソートキーのみが働くわけではなく、第二以降のソートキーもソート順として反映されます。(後述する SQL の ORDER BY 句に、第一ソートキーから順に列挙されます。)

初期設定についての補足

上の図4,5,6に示した初期設定の昇順/降順にかかわらず、一覧表示画面の列のクリック操作は一度目のクリックで昇順、二度目は降順となります。

ソートに利用する項目ID9.3.0

「ソートに利用する項目ID」を指定すると、実際のソート対象 (SQLの order by 句として使われるカラム)を変更することができます。省略時は自分自身(の項目の値)を使います。

ソートに利用する項目ID

仕様・制約

ソートはデータベースの SQL 処理 (ORDER BY 句) によって実現しています。
そのため、データベースによってルールが変わります。

データベースに保存しない項目はソートキーに指定できません

ソートはデータベースの ORDER BY 句によって実現しています。
そのため、データベースに保存しない項目はソートキーとして指定することはできません。

ユーザが操作したソート設定は記憶される

ユーザが項目名をクリックしてソートルールを変更した場合、この情報は(利用者ごとに)記憶されます。ユーザがログオフし、再びログオンすると、直前に操作したソートルールが適用された一覧画面が表示されます。

運用後にソート対象項目を削除、または名前を変更すると実行時エラーになります

Wagbyは一覧表示の並び順(ソートキー)をユーザ毎に保持しています。運用開始後に項目を削除、または項目名を変更した場合、データベースとは異なる(変更前の)状態でソートしようとし、実行時エラーとなります。ソートキーを初期状態に戻すこと(このあと説明あり)で、エラーを解消してください。

ソートキーを初期状態に戻す

検索部に用意された「リセット」ボタンクリック後、再度「検索の実行」を行うと、再検索のタイミングで初期ソートに戻ります。

ソートの一般的なルール

  • 数値、日付型は昇順。
  • アルファベットについては、A,B,C... 順。
  • 日本語文字については、そのデータベースを作成した文字コード順。(文字コードの確認および定義方法についてはデータベースのドキュメントをご確認ください。)

注意

日本語文字でのソートは、利用者が期待した並びにならないことがあります。これは文化的な並びではなく、文字コード順となるためです。

主キーの扱い

主キーは必ずソートキーに含まれます。(*1)

主キーがソート項目として指定されていなければ、最も最後のソート条件になります。(order by 句の末尾に付与されます。)
主キーがソート項目として指定されていれば、その設定に従います。

*1 ページネーション機能を実現するために、order by 句に主キーを指定する必要があります。

NULL 値のソート

値が "NULL" のソートは、データベースによって扱いが異なります。

  • SQL Server, MySQL では、最も小さい値として扱われます。
  • Oracle, DB2, PostgreSQL では、最も大きい値として扱われます。(Oralce 9i 以降では、NULL の扱いを指定することもできます。)
  • 内臓データベース (HSQLDB) では、ソート対象となりません。NULLを含む行が常に先頭になります。

モデル参照項目のソート

参照先モデルが単一主キーの場合

R9.0.0からR9.0.2までは、モデル参照項目をソート対象とすることができません。R9.0.3でこの制約が緩和され、参照先モデルが単一キーの場合は "ID値" でソートされます。

参照先モデルが複合キーの場合9.3.0

マッピング指定と併用することで、参照先モデルの主キー(群)を自モデルの項目として保持することができます。このとき「ソートに利用する項目ID」を指定することができます。例として「主キーにモデル参照項目を含める(マッピング)」をお読みください。

ソートに利用する項目ID

チェックボックス型で参照している場合

ソートさせることができません。

モデル参照(参照連動)項目のソート

参照連動項目が自モデル保存となっている必要があります。

外部キー関係における子モデル部の表示