我正在使用
DoCmd.SetOrderBy
用于按特定字段对表单进行排序。但是现在,如果我使用DESC
关键字,它会按升序或降序排序。如何检查哪些排序处于活动状态并执行相反的操作?如果该字段按升序排序,我单击按钮,顺序将下降,反之亦然。
答案 0 :(得分:1)
您可以通过在表单代码中执行当前的排序顺序
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以匹配您的课程
答案 1 :(得分:0)
正如@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