【问题标题】:Trying to populate a textbox with the result from sql/vba and getting #Name error尝试使用 sql/vba 的结果填充文本框并出现 #Name 错误
【发布时间】: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()。

标签: sql vba ms-access textbox


【解决方案1】:

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

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

【讨论】:

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