Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
Ms access 在Access VBA函数中,对象和变量是否可以在调用之间保持不变。。?_Ms Access_Vba_Ms Access 2007 - Fatal编程技术网

Ms access 在Access VBA函数中,对象和变量是否可以在调用之间保持不变。。?

Ms access 在Access VBA函数中,对象和变量是否可以在调用之间保持不变。。?,ms-access,vba,ms-access-2007,Ms Access,Vba,Ms Access 2007,我在Access 2007中编写了一个自定义函数,用于处理某个复杂字段的查询。由于该函数在一个查询过程中运行了数千次,因此我仔细编写了它,以使其尽可能快。但它仍然有点慢,为了使它更快,我想修改它,使变量和对象在调用之间保持不变,甚至可能将其包装在自定义类中 但是,如果不包装查询,使其在VBA代码模块中运行,怎么会有这样的持久性呢。。?查询期间VBA环境的边界是什么。。?在从SQL调用函数的情况下,它会启动、执行它的操作,然后停止,对于调用它的每个字段一次,数百次、数千次,甚至数百万次。没有可以定

我在Access 2007中编写了一个自定义函数,用于处理某个复杂字段的查询。由于该函数在一个查询过程中运行了数千次,因此我仔细编写了它,以使其尽可能快。但它仍然有点慢,为了使它更快,我想修改它,使变量和对象在调用之间保持不变,甚至可能将其包装在自定义类中

但是,如果不包装查询,使其在VBA代码模块中运行,怎么会有这样的持久性呢。。?查询期间VBA环境的边界是什么。。?在从SQL调用函数的情况下,它会启动、执行它的操作,然后停止,对于调用它的每个字段一次,数百次、数千次,甚至数百万次。没有可以定义模块级变量或对象的表单模块。[据我所知]


如果VBA函数是从标准Access用户界面窗口中运行的查询中调用的,那么这些函数如何在调用之间具有持久变量、对象和类?

在VBA中,您可以定义全局变量或静态变量,只要VB项目保持不变(没有重置所有变量的事件)。不过这个问题有点抽象——它将有助于实际展示您的功能。有一些方法可以用来加快速度,但哪种方法最适合您的情况取决于具体情况。例如,一种方法是使用字典来缓存函数结果:好的,我看到了静态字典。但它在Excel中,不是Access。我的问题的基础是,在查询处理的每个记录中,对字段调用一次函数。在从主访问窗口运行查询的情况下,VBA模块何时加载和卸载?是在查询开始和结束时,还是在处理每个记录时?当然,如果从父代码模块通过DAO运行查询,则所有内容都保持加载状态。但是如果从主窗口运行,那么会发生什么?我可能需要为此设置一个测试项目,使用各种对象来查看发生了什么。这只是一个示例。你问题的答案被你没有发布的代码所束缚。