尝试使用 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 错误的主要内容,如果未能解决你的问题,请参考以下文章