Доступ к 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