将VBA变量传递给Access Query Criteria

时间:2015-01-02 10:56:36

标签: sql vba function ms-access

我有一个简单的任务给我带来很多麻烦。

我需要的是简单地将变量从我的VBA宏移动到一个函数,以便能够在Access Query中使用它。

ADDED:我用简单的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"以我的形式宣布。

我该怎么办?

2 个答案:

答案 0 :(得分:3)

为了帮助像我这样的未来的无赖,我发现了错误。

我将模块命名为与函数相同,这导致了问题。

通过将模块名称从n更改为m_n,并保留函数名称n(),它完全正常。

愚蠢的错误是愚蠢的。但是,谢谢那些调查我的问题的人。

答案 1 :(得分:2)

在表单中将变量声明为public似乎实际上并未使其全局公开。这让我在Access中多次烦恼。将您的计数器声明移动到您的模块代码,您应该看到操作的变化。

在以下SO帖子(Public variables are not REALLY public in VBA in Forms)中对此行为进行了很好的讨论。