Как изменить порядок открытия «форм с вкладками» в MS Access через VBA - PullRequest
0 голосов
/ 04 октября 2018

Я использую формы «документ с вкладками» в MS Access (каждая открытая основная форма имеет «вкладку», позволяющую пользователям легко перемещаться между формами).

Кто-нибудь знает способ переупорядочениятакие открытые формы через VBA?У меня есть обходной код, который закрывает все формы, а затем снова открывает их в нужном мне порядке, но он неуклюжий и медленный (некоторые формы большие, поэтому загрузка занимает некоторое время, и часто пользователи применяют фильтры / сортировки, которыеЗатем мне нужно повторно подать заявку индивидуально, а также сбросить текущую запись и т. Д.).

Поскольку все, что мне нужно, это изменить порядок форм на экране, так что мой подход кажется излишним - но я могуПохоже, что нигде не найти информацию о том, как это сделать!

(к вашему сведению, я НЕ говорю о порядке страниц в элементе управления вкладками, чтобы избежать путаницы!)

Пожалуйста, прикрепите скриншотс тремя открытыми формами с вкладками, я хотел бы перестроить их так, например, слева направо они стали: @Home, Детали бронирования, Детали запроса

3 tabbed forms

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Хорошо, я случайно понял это.

При тестировании я обнаружил, что если вы скрываете форму с вкладками, когда вы ее отображаете, она не появляется в той же позиции, но на самом деле сейчасотображается как последняя форма (то есть самая правая вкладка)

Eureka!Теперь, чтобы изменить порядок форм, я просто скрываю их, а затем показываю их в нужном порядке.Объедините это с DoCmd.Echo = False, и в моем тестировании издержки практически равны нулю.

Фу!

0 голосов
/ 05 октября 2018

Если пользователь не видит все формы одновременно, вам не нужно тратить ресурсы / время на загрузку всех форм одновременно.Загружайте только то, что должен увидеть пользователь.NavigationControl очень хорош для этого.

Метод 1

Переход от документов с вкладками к NavigationControl.Каждая вкладка загружена OnDemand, поэтому запуск вашей основной формы будет намного быстрее.Если основная форма и форма с вкладками связаны друг с другом, используйте событие OnOpen формы с вкладками для динамического изменения источника записи.

Т.е. Form_Open => me.RecordSource = Select * form T1 where T1.id = ParentForm.Id

Метод 2

Если вы не можете перейти к элементу навигации, имитируйте тот же эффект, что и выше.Когда вкладки изменяются / выбираются => основная форма получает источник записи.

Т.е.

Private Sub TabCtl2_Change()
    If Me.TabCtl2.value = 1 Then
        me.subform1.recordsource    = source
        me.subform1.LinkChildFields = linkingFieldName 'if related
        me.subform1.LinkChildFields = LinkMasterFields 'if related
    ElseIf Me.TabCtl2.value = 2 Then
        'Your other form
    end if
End Sub

Это может помочь вам сократить время загрузки.

[Каскадные наборы результатов] В случае, если все ваши формы показывают каскадные результаты, вы можете рассмотреть возможность удаления источника записей для всех ваших подчиненных форм, а затем повторно применять при каждом выборе.

Цель состоит в том, чтобы минимизировать время загрузки и показывать только необходимые данные, которые пользователь должен видеть / хотеть видеть.Надеюсь, это поможет понять.

...