记录集:对记录进行排序 (ODBC)

本主题适用于 MFC ODBC 类。

本主题介绍如何对记录集进行排序。 你可以指定一个或多个作为排序依据的列,并且你可以为每个指定的列指定升序或降序(ASC 或 DESC;默认值为 ASC)。 例如,如果指定两列,则记录先根据指定的第一列进行排序,然后根据第二列进行排序。 SQL ORDER BY 子句定义一种排序。 当框架将 ORDER BY 子句追加到记录集的 SQL 查询时,该子句将控制所选内容的排序。

必须在构造记录集对象之后,且在调用其 Open 成员函数之前(或在调用现有记录集对象 [之前已调用其 Open 成员函数] 的 Requery 成员函数之前)建立该记录集的排序顺序。

指定记录集对象的排序顺序

  1. 构造新的记录集对象(或准备调用现有对象的 Requery)。

  2. 设置对象的 m_strSort 数据成员的值。

    排序是以 NULL 结尾的字符串。 它包含 ORDER BY 子句的内容,但不包含关键字 ORDER BY。 例如,使用:

    recordset.m_strSort = "LastName DESC, FirstName DESC";
    

    not

    recordset.m_strSort = "ORDER BY LastName DESC, FirstName DESC";
    
  3. 设置所需的任何其他选项,例如筛选器、锁定模式或参数。

  4. 针对新对象,调用 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)。

注意

如果你选择通过将自己的 SQL 字符串传递到 Open 来覆盖记录集的默认 SQL 字符串,则在自定义字符串具有 ORDER BY 子句的情况下,请勿设置排序。

另请参阅

记录集 (ODBC)
记录集:参数化记录集 (ODBC)
记录集:筛选记录 (ODBC)