使用VBA模块从Access中的表单中获取文本值

时间:2012-02-21 18:59:34

标签: forms ms-access vba

我目前想从表单中获取一个值,以便在我使用VBA在Access下的模块中进行的SQL查询中设置它。我试着用

value = Forms![NameOfForm]![NameOfTextbox] 

sqlquery = "...." & value & "....."

它出错(2450)说它找不到指定的表格。如何获取此文本框的值,以便在模块中使用它?

THX

1 个答案:

答案 0 :(得分:8)

修改您的VBA代码以确保表单已打开。

DoCmd.OpenForm "NameOfForm"

这应该可以防止错误#2450。

之后,您不需要将[NameOfTextbox]的值存储到变量中,然后使用该变量来构建SQL语句。您可以直接使用其值。

sqlquery = "SELECT * FROM YourTable " & _
"WHERE some_field = '" & Forms![NameOfForm]![NameOfTextbox] & "';"

或者在查询中嵌入对文本框本身的引用(而不是文本框的值)。

sqlquery = "SELECT * FROM YourTable " & _
"WHERE some_field = Forms![NameOfForm]![NameOfTextbox];"

我假设some_field是一个文本数据类型字段,因此在第一个查询示例中用单引号括起文本框值。请注意,第二个示例不需要引号,因为它按名称而不是其值引用文本框。

但是,如果您继续使用原始方法(将文本框值存储到变量中),请不要将变量命名为“value”,因为值可能会与许多对象的属性混淆。