使用命令按钮切换排序顺序
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
我正在使用
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