Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 访问UI(controlsource属性)与VBA性能_Performance_Vba_Ms Access - Fatal编程技术网

Performance 访问UI(controlsource属性)与VBA性能

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 =

当使用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
我还可以通过TXTEST1和TXTEST2控件中的Properties窗口,使用MS Access UI将ControlSource属性设置为以下值,以获得相同的结果

txtTest1控制源代码:
=[lstest].[Column](0)

txtTest2控制源代码:
=[lstest].[列](1)


就性能而言,这两种方法之间有什么区别吗?如果您有任何关于这方面的文档,我们将不胜感激。

这里有“一点”不同,但实际上并没有任何东西会影响应用程序的性能

第一个示例可以考虑得更好,因为值被“填充”到其他控件中。当然,问题是下次加载表单时,如果TXTEST1/2未绑定,那么下次加载表单时,您可能需要运行一些代码来重新加载值。(这使得第一个例子更糟)

因此,在第一种情况下,这些值不会持久化,下次加载表单(或导航到其他记录)时,这些值将不会更新,因为第一个示例仅在触发“更新后”事件时更新这些值。更新后事件仅在更改组合框时触发,而不是在常规表单加载或导航时触发

因此,问题可能不是性能问题,而仅仅是第一个示例的问题在下次加载表单时将不起作用,也不会显示数据(当然,除非文本框绑定到基础列)


由于在加载表单或进行记录导航时需要始终运行代码,因此您可能最好使用控制源代码方法,因为在这两种情况下,您可能都希望正确显示这些值,因此在这两种情况下,您都必须引用.column()属性。

这很有意义,我主要只是好奇这两种方法之间的细微差别。我通常更喜欢尽可能地使用Access UI,在测试它时,似乎控制源代码方法可能更有效,但很难说。谢谢使用控制源代码方法的一个警告似乎是,如果使用INSERT SQL字符串编辑记录,则必须使用AfterUpdate事件,否则将不允许用户编辑数据。