尝试使用 sql/vba 的结果填充文本框并出现 #Name 错误

Posted

技术标签:

【中文标题】尝试使用 sql/vba 的结果填充文本框并出现 #Name 错误【英文标题】:Trying to populate a textbox with the result from sql/vba and getting #Name error 【发布时间】:2019-05-22 14:08:47 【问题描述】:

我正在尝试使用选择标准是另一个变量的查询中的值填充 Access 表单上的文本框。 代码正在生成 sql,然后我将其放入文本框对象的行源中,但我只是在文本框中得到一个 #Name。 如果我将生成的 sql 放入查询生成器并运行它,它就可以工作。

With Me.txtSupplier_ID
        .SetFocus
        .ControlSource = "(SELECT [Customer_ID] FROM [qrySelectCustData] WHERE [CustomerName] ='" & cVal & "')"
        .Requery

End With

如果我将生成的 sql 放入查询生成器并运行它,它就可以工作。

With Me.txtSupplier_ID
        .SetFocus
        .ControlSource = "(SELECT [Customer_ID] FROM [qrySelectCustData] WHERE [CustomerName] ='" & cVal & "')"
        .Requery

End With

文本框应填充与客户名称相关的客户 ID。名称很好,控制源也很好,但仍然得到#Name?而是错误。

【问题讨论】:

文本框控件不支持 SQL,也不能将 sql 作为数据源。所以,你必须使用代码 + 记录集,或者使用 dlookup()。 【参考方案1】:

您不能以这种方式直接使用 SQL。使用DLookup

.ControlSource = "=DLookup(""[Customer_ID]"",""[qrySelectCustData]"",""[CustomerName]='" & [cVal] & "'"")"

【讨论】:

非常感谢,我使用了指定的代码,但它现在将实际字段值返回到属性窗口中的 controlsource 字段中。这再次导致#Name?错误。我假设我不能直接用值填充文本框控件? 对,它返回的是值,而不是表达式。请查看编辑后的答案。 谢谢大家。我让它工作了,虽然它仍然需要一些调整,但你肯定给我指出了正确的方向。最终的代码是这样的:.ControlSource = "=DLookup(""[Customer_ID]"",""qrySelectCustData"", ""[CustomerName] = '" & cVal & "'"")"

以上是关于尝试使用 sql/vba 的结果填充文本框并出现 #Name 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用对数据库表的查询结果填充 html 表单选择元素

Windows 窗体按钮显示文本框并输入名称以创建新按钮 [关闭]

如何使用 jquery.dirtyforms?

从 Angular 2 上的查询参数中预填充输入文本框

MS access 2007 使用组合框填充图片

基于动态选择启用文本框并对文本框应用验证