使用Access UI并设置属性以向文本框(或其他控件)添加值时,性能(速度,使用的内存等)是否存在差异,而不是使用VBA执行相同的操作时对象变量是否正确使用?
例如,让我们说我想从列表框中选择一个项目,并将所选记录中的值添加到2个文本框控件中。我可以通过在列表框的AfterUpdate
事件过程中使用以下VBA代码来完成此操作:
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
我还可以使用MS Access UI通过txtTest1和txtTest2控件中的Properties窗口设置ControlSource属性,以达到相同的效果。
txtTest1 ControlSource:=[lstTest].[Column](0)
txtTest2 ControlSource:=[lstTest].[Column](1)
就性能而言,这两种方法之间有什么区别吗?关于此的任何文件将不胜感激。
答案 0 :(得分:0)
存在一点“差异”,但实际上并没有任何能够明智地破坏应用程序性能的东西。
第一个例子可以被认为是更好的,因为值被“填充”到其他控件中。问题当然是下次加载表单时,如果txtTest1 / 2是UNBOUND,那么下次表单加载时,你可能需要运行一些代码来重新加载这些值。 (所以这使得第一个例子变得更糟)
因此,在您的第一种情况下,值将不会持久存在,并且下次加载表单(或导航到其他记录)时,这些值将不会更新,因为您的第一个示例仅在更新后事件触发时更新值。更新后事件仅在您更改组合框时触发,而不是在常规表单加载或导航时触发。
因此问题可能不是性能,而只是第一个示例的问题不会起作用,也不会在下次加载表单时显示数据(当然除非文本框绑定到基础列)。
由于代码需要在表单加载时始终运行,或者发生记录导航,因此您最好使用控件源方法,因为在两种情况下您可能希望这些值正确显示,因此在这两种情况下您都必须引用无论如何都是.column()属性。