ソート

最終更新日: 2022年11月29日
R8 | R9

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

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

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

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

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

図2 電子メール項目の昇順ソートに切り替えた

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

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

ソートキーを初期化する

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

定義方法

サンプルで用いた顧客モデルの定義を図3に示します。ここでは「氏名」「氏名かな」「電子メール」の3つの項目にソートキーを設定します。

図3 顧客モデルの定義

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

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

図4 「電子メール」項目を第一ソートキーかつ逆順とする
図5 「氏名かな」項目を第二ソートキーとする
図6 「氏名」項目を第三ソートキーとする

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

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

初期設定についての補足

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

仕様・制約

ソートはデータベースの 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を含む行が常に先頭になります。

モデル参照項目のソート

参照先モデルが単一キーの場合は "ID値" でソートされます。参照先モデルが複合キーの場合、およびチェックボックス項目はソートできません。

※ モデル参照項目をソート対象とすることは非推奨です。その理由は、モデル参照項目は "ID値" でソートするためです。多くの場合、表示されている内容と、ソートの並びが一致しないという印象を受けることになります。

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

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

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