访问VBA - 具有多个字段的OrderBy

时间:2011-04-21 15:57:42

标签: sql ms-access access-vba

我想知道我应该怎么做。实际上,我有一些子表单,通过点击标题,我希望这个子表单的记录集有序。这是我做的一个例子:

Private Sub sigle_cours_Label_Click()
    If (Me.OrderBy = "COU.sigle_cours") Then
        Me.OrderBy = "COU.sigle_cours DESC"
    Else
        Me.OrderBy = "COU.sigle_cours"
    End If
    Me.OrderByOn = True
End Sub

我的问题是这个问题:我想使用sigle_cours和num_cours订购OrderBy,但它不起作用。我试过这个但是没有办法按DESC排序:

Private Sub sigle_cours_Label_Click()
    If (Me.OrderBy = "COU.sigle_cours,COU.num_cours") Then
        Me.OrderBy = "COU.sigle_cours DESC,COU.num_cours DESC"
    Else
        Me.OrderBy = "COU.sigle_cours,COU.num_cours"
    End If
    Me.OrderByOn = True
End Sub

我该怎么做?

1 个答案:

答案 0 :(得分:3)

当您为OrderBy属性分配字符串值时,Access可能会对其进行转换...因此不会完全存储您期望的内容。在您的情况下,我怀疑Access在逗号后面添加了一个空格,所以如果您在表单的代码中包含它...

Me.OrderBy = "COU.sigle_cours,COU.num_cours"
Debug.Print "Me.OrderBy='" & Me.OrderBy & "'"

您可能会在立即窗口中看到这个...

Me.OrderBy = 'COU.sigle_cours, COU.num_cours'

实际上,我并不认为这是对你问题的解释。尽管如此,我怀疑你更有可能通过模式匹配当前的OrderBy值而不是测试与固定字符串的精确匹配来找到快乐。试试这种方式:

Private Sub sigle_cours_Label_Click()
    If (Me.OrderBy Like "*DESC*") Then
        Me.OrderBy = "COU.sigle_cours, COU.num_cours"
    Else
        Me.OrderBy = "COU.sigle_cours DESC, COU.num_cours DESC"
    End If
    Me.OrderByOn = True
End Sub