使用命令按钮

时间:2015-04-24 13:21:24

标签: vba sorting ms-access access-vba ms-access-2013

我正在使用

DoCmd.SetOrderBy

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

2 个答案:

答案 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