Performance 访问UI(controlsource属性)与VBA性能
当使用Access UI并设置属性向文本框(或其他控件)添加值时,与正确使用对象变量时使用VBA执行相同操作时,性能(速度、使用的内存等)是否存在差异 例如,假设我想从列表框中选择一个项目,并将所选记录中的值添加到2个文本框控件中。我可以通过在列表框的Performance 访问UI(controlsource属性)与VBA性能,performance,vba,ms-access,Performance,Vba,Ms Access,当使用Access UI并设置属性向文本框(或其他控件)添加值时,与正确使用对象变量时使用VBA执行相同操作时,性能(速度、使用的内存等)是否存在差异 例如,假设我想从列表框中选择一个项目,并将所选记录中的值添加到2个文本框控件中。我可以通过在列表框的AfterUpdate事件过程中使用以下VBA代码来完成此操作: Private Sub lstTest_AfterUpdate() Dim lstA As Control Set lstA = Me.lstTest Me.txtTest1 =
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
我还可以通过TXTEST1和TXTEST2控件中的Properties窗口,使用MS Access UI将ControlSource属性设置为以下值,以获得相同的结果
txtTest1控制源代码:=[lstest].[Column](0)
txtTest2控制源代码:=[lstest].[列](1)
就性能而言,这两种方法之间有什么区别吗?如果您有任何关于这方面的文档,我们将不胜感激。这里有“一点”不同,但实际上并没有任何东西会影响应用程序的性能 第一个示例可以考虑得更好,因为值被“填充”到其他控件中。当然,问题是下次加载表单时,如果TXTEST1/2未绑定,那么下次加载表单时,您可能需要运行一些代码来重新加载值。(这使得第一个例子更糟) 因此,在第一种情况下,这些值不会持久化,下次加载表单(或导航到其他记录)时,这些值将不会更新,因为第一个示例仅在触发“更新后”事件时更新这些值。更新后事件仅在更改组合框时触发,而不是在常规表单加载或导航时触发 因此,问题可能不是性能问题,而仅仅是第一个示例的问题在下次加载表单时将不起作用,也不会显示数据(当然,除非文本框绑定到基础列)
由于在加载表单或进行记录导航时需要始终运行代码,因此您可能最好使用控制源代码方法,因为在这两种情况下,您可能都希望正确显示这些值,因此在这两种情况下,您都必须引用.column()属性。这很有意义,我主要只是好奇这两种方法之间的细微差别。我通常更喜欢尽可能地使用Access UI,在测试它时,似乎控制源代码方法可能更有效,但很难说。谢谢使用控制源代码方法的一个警告似乎是,如果使用INSERT SQL字符串编辑记录,则必须使用AfterUpdate事件,否则将不允许用户编辑数据。