Доступ к VBA - OrderBy с несколькими полями - PullRequest
0 голосов
/ 21 апреля 2011

Интересно, как мне это сделать?На самом деле, у меня есть некоторая подчиненная форма, и, нажимая на заголовок, я хочу, чтобы набор записей этой подчиненной формы упорядочился.Это пример того, что я делаю:

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

Моя проблема заключается в следующем: я хочу OrderBy с sigle_cours AND 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

Как мне это сделать?

1 Ответ

3 голосов
/ 21 апреля 2011

Когда вы присваиваете строковое значение свойству 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
...