将 VBA 变量传递给访问查询条件
Passing VBA variable to Access Query Criteria
我有一个简单的任务给我带来了很多麻烦。
我需要的是简单地将一个变量从我的 VBA 宏移动到一个函数,以便能够在访问查询中使用它。
添加:我创建了一个小而简单的访问文档,带有简单的 VBA。下载地址:
http://sharesend.com/olpy1o7d
如果有人可以下载并看看我做错了什么,我真的很乐意。
在表单 f_main
中,我需要能够将 counter
更改为任何数字,因此在主表单中按下按钮时获得更新的查询。
下面有介绍,不过下载下来可能更容易说明我的情况。
已编辑:
Public counter as Integer
Private Sub Command_Click()
counter = 1
End Sub
并且在一个模块中:
Public Function n()
n = counter
End Function
在访问中,我有一个 SQL 查询为:
SELECT t_Data.ID, n() AS Expr1 FROM t_Data;
Access 说找不到函数 n()
如果我使用函数构建器,我可以看到 n(),所以我猜这是因为函数 n() 是空的 - 它找不到在我的表单中声明的 "counter"。
我能做什么?
在表单中将变量声明为 public 似乎并没有真正使它全局化 public。这让我在 Access 中烦恼了很多次。将计数器声明移至模块代码,您应该会看到操作发生变化。
在下面的 SO post (Public variables are not REALLY public in VBA in Forms) 中对此行为进行了很好的讨论。
为了帮助像我这样的未来无赖,我发现了这个错误。
我将模块命名为与函数相同的名称,这导致了问题。
通过将模块名称从 n
更改为 m_n
,并保留函数名称 n()
,它工作得非常好。
愚蠢的错误是愚蠢的。但是谢谢你们调查我的问题。
我有一个简单的任务给我带来了很多麻烦。
我需要的是简单地将一个变量从我的 VBA 宏移动到一个函数,以便能够在访问查询中使用它。
添加:我创建了一个小而简单的访问文档,带有简单的 VBA。下载地址: http://sharesend.com/olpy1o7d
如果有人可以下载并看看我做错了什么,我真的很乐意。
在表单 f_main
中,我需要能够将 counter
更改为任何数字,因此在主表单中按下按钮时获得更新的查询。
下面有介绍,不过下载下来可能更容易说明我的情况。
已编辑:
Public counter as Integer
Private Sub Command_Click()
counter = 1
End Sub
并且在一个模块中:
Public Function n()
n = counter
End Function
在访问中,我有一个 SQL 查询为:
SELECT t_Data.ID, n() AS Expr1 FROM t_Data;
Access 说找不到函数 n()
如果我使用函数构建器,我可以看到 n(),所以我猜这是因为函数 n() 是空的 - 它找不到在我的表单中声明的 "counter"。
我能做什么?
在表单中将变量声明为 public 似乎并没有真正使它全局化 public。这让我在 Access 中烦恼了很多次。将计数器声明移至模块代码,您应该会看到操作发生变化。
在下面的 SO post (Public variables are not REALLY public in VBA in Forms) 中对此行为进行了很好的讨论。
为了帮助像我这样的未来无赖,我发现了这个错误。
我将模块命名为与函数相同的名称,这导致了问题。
通过将模块名称从 n
更改为 m_n
,并保留函数名称 n()
,它工作得非常好。
愚蠢的错误是愚蠢的。但是谢谢你们调查我的问题。