使用命令按钮切换排序顺序

Toggle sort order with a command button

我正在使用

DoCmd.SetOrderBy

用于按特定字段对表单进行排序。但是现在,如果我使用 DESC 关键字,它会按升序或降序排序。我如何检查以查看哪些排序处于活动状态并执行相反的操作?如果该字段按升序排列,我单击按钮,则顺序变为降序,反之亦然。

您可以在表单代码中获取当前排序顺序

debug.print me.orderby

结果会是这样的

[FORM].[COLUMN] Desc

那么做一个if语句

if me.orderby = [FORM].[COLUMN] Desc then 
    docmd.setorderby "[COLUMN] ASC"
else
    docmd.setorderby "[COLUMN] Desc"
end if

试试看。更改 FORM 和 COLUMN 以匹配您的当然

正如@Sam 所建议的那样,检查 Me.OrderBy 属性 的值来决定新的排序顺序是升序还是降序。

如果没有当前排序(即 Me.OrderBy 是一个空字符串),以下代码示例假设您需要升序排序。

否则检查Me.OrderBy是否为Like "* DESC"。请注意,如果当前排序顺序为升序,请不要假设 ASC 会出现在 Me.OrderBy 中。并且不要假设 Me.OrderBy 的列名称片段将显示为 [FORM].[COLUMN]

Dim strOrderBy As String
Dim strDirection As String

strOrderBy = Me.OrderBy
If Len(strOrderBy) = 0 Then
    strDirection = "ASC"
Else
    If strOrderBy Like "* DESC" Then
        strDirection = "ASC"
    Else
        strDirection = "DESC"
    End If ' Like 
End If ' Len(strOrderBy)
DoCmd.SetOrderBy "[YourColumnName] " & strDirection