2011-04-21 103 views
0

我想知道我应该如何做到这一点。实际上,我有一些子表单,通过点击标题,我希望这个子表单的记录集按顺序排列。这是我做的一个例子:访问VBA - OrderBy与多个字段

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来排序依据,但它不工作。我试试这个,但是没有办法按照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 

我应该怎么做?

回答

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 
+0

访问可以做很奇怪的事情的窗体的ORDER BY属性。我有一个应用程序在ORDER BY子句的字段之间插入三个或四个空格。最简单的做法是将所有空格替换为Nothing,然后对其进行测试。 – 2011-04-26 01:50:10

+0

你是男人!打印Me.OrderBy后,我注意到你说的Access在逗号后面添加一个空格。在此之后,修复代码是一件小事。谢谢! – 2011-04-27 15:48:43