2015-01-10 2 views
0

Есть ли разница в производительности (скорость, память и т. Д.) При использовании пользовательского интерфейса доступа и установка свойства для добавления значения в текстовое поле (или другое управление) в противоположность использовать VBA, чтобы сделать то же самое, когда объектные переменные правильно используются?Доступ к пользовательскому интерфейсу (свойство controlource) vs Производительность VBA

Например, предположим, что я хочу выбрать элемент из списка и добавить значения из выбранной записи в 2 элемента управления текстовыми полями. Я могу сделать это с помощью следующего VBA кода в процедуре AfterUpdate событий в ListBox:

Private Sub lstTest_AfterUpdate() 
Dim lstA As Control 

Set lstA = Me.lstTest 

Me.txtTest1 = lstA.Column(0) 
Me.txtTest2 = lstA.Column(1) 

Set lstA = Nothing 

End Sub 

Я могу также установить свойство ControlSource с помощью MS Access UI через окно свойств в txtTest1 и txtTest2 управления к для достижения такого же результата.

txtTest1 ControlSource: =[lstTest].[Column](0)

txtTest2 ControlSource: =[lstTest].[Column](1)

Есть ли разница между этими 2 подходами, насколько производительность обеспокоена? Любая документация по этому вопросу была бы весьма признательна.

ответ

0

Существует «бит» разницы, но на самом деле это не то, что может сделать или сломать производительность приложения.

Первый пример можно считать лучше, поскольку значения «набиты» в другие элементы управления. Проблема, конечно, в следующий раз, когда вы загружаете форму, если txtTest1/2 являются UNBOUND, а в следующий раз, когда загружается форма, вам, вероятно, придется запустить некоторый код, чтобы снова загрузить значения. (так что это делает первый пример хуже)

Таким образом, в вашем первом случае значения НЕ сохраняются, и в следующий раз, когда вы загружаете форму (или переходите к другой записи), такие значения не будут обновляться с первого примера ТОЛЬКО обновляет значения КОГДА запускается событие after update. То, что после события обновления ТОЛЬКО срабатывает КОГДА вы меняете поле со списком, а не на общей загрузке формы или навигации.

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

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

+0

Это имеет смысл, я был в основном просто любопытен в отношении любых незначительных различий между двумя подходами. Обычно я предпочитаю использовать пользовательский интерфейс доступа, когда это возможно, и при его тестировании оказалось, что подход Control Source, возможно, был более эффективным, но его трудно сказать. Благодаря! – user3654610

+0

Одно из возможных препятствий, по-видимому, в использовании подхода Control Source заключается в том, что если вы используете строку INSERT SQL для редактирования записи, вы должны использовать событие AfterUpdate или не разрешить пользователю редактировать данные. – user3654610

Смежные вопросы