You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access表单ControlSource无效:文本框查询返回#Name?问题求助

解决Access文本框ControlSource中查询报错#Name?的问题

其实你把查询放在ControlSource里是完全可行的,只是你的语句存在小语法问题,才导致Access识别失败并显示#Name?。

问题根源与修正方案

你的子查询少了一个闭合的右括号,另外还要注意ID字段的数据类型:

  • 如果ID是文本类型,修正后的ControlSource语句:
    =(SELECT [QueryOne].[Company] FROM [QueryOne] WHERE [QueryOne].[ID] = "1000")
    
  • 如果ID是数字类型,不需要给值加引号,修正语句:
    =(SELECT [QueryOne].[Company] FROM [QueryOne] WHERE [QueryOne].[ID] = 1000)
    

两种更稳妥的替代方案

如果觉得在ControlSource里写子查询不够直观,也可以试试这两种常用方法:

  • 用DLookup函数获取单个值
    这是Access中专门用来提取单条记录字段值的函数,语法更简洁,出错概率更低:
    =DLookUp("[Company]","[QueryOne]","[ID]='1000'")
    
    若ID为数字类型,去掉引号即可:
    =DLookUp("[Company]","[QueryOne]","[ID]=1000")
    
  • 通过表单RecordSource绑定
    先把表单的RecordSource设置为目标查询,再在表单加载时过滤记录:
    1. 把文本框的ControlSource直接选择Company字段
    2. 在表单的Form_Load事件中添加VBA代码:
      Private Sub Form_Load()
          Me.RecordSource = "SELECT [Company] FROM [QueryOne] WHERE [ID] = 1000"
      End Sub
      

总的来说,你的思路没问题,只是语句的小疏漏导致了报错,修正后就能正常显示内容了。

内容的提问来源于stack exchange,提问作者user7867367

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:13:32