Доступ к VBA OpenForm Группировка и сортировка

У меня есть форма, которая используется для ввода данных. Мы должны вернуться и добавить данные к этим записям. Есть ли способ получить форму, которая группирует записи по полю "A" и сортирует по полю "B"? По существу, это упорядочит формы A1-1, A1-2 и т. Д., Упрощая добавление данных.

Прямо сейчас я использую DoCmd.OpenForm для отображения только записей с определенными значениями в определенных полях. Мне просто нужно немного изменить это?

Спасибо за помощь!

[Редактировать]

Я хотел бы, чтобы это загрузить форму по нажатию кнопки, поэтому у меня есть

Private Sub btnDataEntry_Click() 
    DoCmd.OpenForm "Data Sheet", acNormal, , , acFormEdit, , OpenArgs:="MapNumber"
End Sub

Тогда как предложено

Private Sub Form_Load() 
    If Not IsNull(Me.OpenArgs) Then 
        Main.OrderBy = Me.OpenArgs 
        Main.OrderByOn = True 
    End If 
End Sub

Это не работает для меня. Если возможно, я бы также хотел, чтобы все номера карт были сгруппированы вместе, а затем все номера элементов по возрастанию. Таким образом, может быть 10 записей с номером карты 1 и номерами пунктов 1-10.

1 ответ

Решение

OpenForm не включает возможность указать порядок сортировки. Однако вы можете использовать его опцию OpenArgs для передачи информации сортировки, а затем применить ее во время загрузки формы.

Private Sub Form_Load()
    If Not IsNull(Me.OpenArgs) Then
        Me.OrderBy = Me.OpenArgs
        Me.OrderByOn = True
    End If
End Sub

Затем открыть YourForm, отсортированный по полю с именем id в порядке возрастания...

DoCmd.OpenForm "YourForm", OpenArgs:="id"

Включают DESC по убыванию...

DoCmd.OpenForm "YourForm", OpenArgs:="id DESC"

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

Private Sub Form_Load()
    MsgBox "Me.OpenArgs: " & Nz(Me.OpenArgs, "Null")
    If Not IsNull(Me.OpenArgs) Then
        Me.OrderBy = Me.OpenArgs
        Me.OrderByOn = True
    End If
    MsgBox "Me.OrderBy : '" & Me.OrderBy & "'"
    MsgBox "Me.OrderByOn: " & Me.OrderByOn
End Sub
Другие вопросы по тегам