MS Access:引用VBA查询定义中的子窗体文本框控件元素

时间:2014-12-20 19:39:41

标签: sql vba access-vba ms-access-2010

我有一个带用户输入(文本框)的子表单,可以达到255个以上的字符,并且可以有特殊字符。由于我无法将其作为参数分配给vba查询定义(只有255个字符可用),我想到直接引用文本框:

Insert into ...
Values (Forms!MainFormName!txt_MyTextField, ... )

在Access GUI中的查询中有效,但在使用以下代码指定的vba查询定义中不起作用:

Set query_definition = CurrentDb.CreateQueryDef("", SQLQuery)) 

“Forms!MainFormName!NameOfSubformNavigationElement!txt_MyTextField”无法作为参考,以防万一你想知道。 “Forms!MainFormName!NameOfSubformNavigationElement.Form.txt_MyTextField”

我怎样才能得到我想要的东西?字符串可以有任何类型的特殊字符,如'和'。除了将用户输入附加到sql查询之外别无选择吗?是否有一些内置函数可以转义这些值?

1 个答案:

答案 0 :(得分:0)

更新:现在添加了另一个示例,即环境已知。

要在动作查询中使用表单字段,请创建一个将返回所需字段的公共函数,然后从查询中调用该函数。

Public Function GetFormField() As String
    GetFormField = Forms![MyMainForm]!MySub.Form.MyField
End Function

在您的查询中,请使用以下内容:

WHERE ((([106thZip_code_database].zipcode)=GetFormField()));

以下是您可以在主窗体中使用的示例,以引用子窗体中的字段。 'MySub'是Main表单上控件的名称 - 而不是子表单的对象名称。

Debug.Print Forms![MyMainForm]!MySub.Form.MyField

有关此主题的详细参考资料,请访问:http://access.mvps.org/access/forms/frm0031.htm