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

Access 2016:表单中显示供应商名称而非ID的问题求助

Access表单显示供应商ID而非名称的解决办法

优先方案:用关联查询作为表单记录源(最规范稳定)

这是符合数据库规范化的最优解,你之前尝试过创建查询,但可能没正确关联到表单:

  1. 创建新查询,添加T_Database和T_fournisseur两个表,Access会自动根据id_fournisseur建立内连接(如果没自动建立,手动拖曳两个表的id_fournisseur字段建立关联)
  2. 在查询设计视图中,勾选需要显示的字段:T_Database.numero、T_Database.date、T_Database.region、T_fournisseur.Fournisseurs(以及你需要的其他字段)
  3. 保存这个查询,命名为Q_Database_Fournisseur
  4. 打开表单F_infos,在属性窗口中找到记录源,选择刚才创建的Q_Database_Fournisseur
  5. 删除表单中原来绑定id_fournisseur的控件,添加一个文本框,将其控件来源设置为Fournisseurs字段

排查你之前尝试方法的潜在问题

1. DLookup函数错误

如果id_fournisseur是数字类型,你的DLookup语句多了单引号,会导致类型不匹配,正确写法:

=DLookup("Fournisseurs", "T_fournisseur", "id_fournisseur = " & [id_fournisseur])

如果是文本类型,才需要单引号:

=DLookup("Fournisseurs", "T_fournisseur", "id_fournisseur = '" & [id_fournisseur] & "'")

注意要确保文本框未绑定到id_fournisseur,而是用这个DLookup作为控件来源。

2. 内连接SQL未正确应用

你写的SQL语句是正确的,但需要确保:

  • 这个SQL是F_infos表单的记录源,或者是你创建的查询的SQL
  • 筛选表单F_multicriteres的搜索按钮代码中,是基于这个关联查询来筛选,而不是直接筛选T_Database

3. 组合框设置错误

如果用组合框显示供应商名称,需要正确配置:

  • 组合框的行来源设为:SELECT id_fournisseur, Fournisseurs FROM T_fournisseur ORDER BY Fournisseurs
  • 绑定列设为1(对应id_fournisseur,用于后台关联)
  • 列数设为2
  • 列宽设为0cm;5cm(第一个列宽0隐藏ID,第二个显示名称)
  • 确保组合框的控件来源绑定到id_fournisseur字段,这样显示名称但存储ID

4. VBA代码的潜在问题

  • 如果id_fournisseur是文本类型,SQL语句需要加单引号:
    strSQL = "SELECT Fournisseurs FROM T_fournisseur WHERE id_fournisseur = '" & Me.Controls("id_fournisseur").Value & "'"
    
  • 确保Txt_Fournisseurs是未绑定文本框,不要绑定到任何字段
  • 可以在Form_Load事件中也调用这段代码,确保表单加载时就显示正确名称

补充说明

避免使用Lookup Wizard是正确的,它确实会破坏数据库规范化,导致后续维护困难。优先使用关联查询的方式,既能保证数据一致性,又能稳定显示关联字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:00:33