我有一个带用户输入(文本框)的子表单,可以达到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查询之外别无选择吗?是否有一些内置函数可以转义这些值?
答案 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