レコードセット : レコードの並べ替え (ODBC)
更新 : 2007 年 11 月
このトピックの内容は、MFC ODBC クラスに該当します。
このトピックでは、レコードセットを並べ替える方法について説明します。並べ替えを行うときは、基準にする列と、昇順 (ASC : 既定) または降順 (DESC) を指定できます。たとえば、2 つの列を指定した場合は、最初に指定した列を基準にして並べ替えが行われ、次に 2 番目に指定した列を基準にして並べ替えが行われます。並べ替えの内容は、SQL ORDER BY 句で定義します。レコードセットの SQL クエリに ORDER BY 句を追加すると、選択されたレコードの並べ替えが行われます。
レコードセットの並べ替え順序は、レコードセット オブジェクトの構築後、メンバ関数 Open を呼び出す前に (既に開かれているレコードセット オブジェクトを再利用する場合はメンバ関数 Requery を呼び出す前に) 指定します。
レコードセット オブジェクトの並べ替え順序を指定するには、
新しいレコードセット オブジェクトを構築します。既存のオブジェクトを利用する場合は、Requery を呼び出せる状態にします。
レコードセット オブジェクトの m_strSort データ メンバの値を設定します。
並べ替えは、NULL で終わる文字列で指定します。この文字列は、SQL ORDER BY 句から ORDER BY キーワードを除いた部分です。次のように設定します。
recordset.m_strSort = "LastName DESC, FirstName DESC";
次のように設定しないでください。
recordset.m_strSort = "ORDER BY LastName DESC, FirstName DESC";
必要に応じて、その他のオプション (フィルタ、ロック方法、パラメータなど) を設定します。
新規オブジェクトでは Open を呼び出します。既存のオブジェクトを利用するときは Requery を呼び出します。
選択されたレコードは指定された順に並べ替えられます。たとえば、学生レコードをまず姓に基づいて、次に名前に基づいて、それぞれ降順で並べ替えるには、次のように設定します。
// Construct the recordset
CStudentSet rsStudent( NULL );
// Set the sort
rsStudent.m_strSort = "LastName DESC, FirstName DESC";
// Run the query with the sort in place
rsStudent.Open( );
このレコードセットには、全学生のレコードが姓名に基づいて降順で (Z から A へ) 並べ替えられて格納されています。
メモ : |
---|
Open に新しい SQL 文字列を渡すと、レコードセットの既定の SQL 文字列がオーバーライドされます。この場合、カスタム文字列に ORDER BY 句が含まれているときは、並べ替えを設定しないでください。 |