Ms access 为什么我的访问表单在保存时会更改字段?

Ms access 为什么我的访问表单在保存时会更改字段?,ms-access,ms-access-forms,Ms Access,Ms Access Forms,我是一个比较新的人,我正在为一个体育联盟建立一个数据库。我有两张表,如下所示: 表1-团队: 团队ID(自动编号,主键) 名称(短文本) 表2-结果: 游戏ID(自动编号,主键) 主团队ID(表1中的外键) 客场团队ID(表1中的外键) 获胜团队ID(表1中的外键) 我制作了一个表格,显示了表2中的主客场/获胜团队ID,但是我确实很难显示团队名称(从表1的链接) 在表单的记录源中,我将表2链接到表1的三个副本,然后将三个表1中的主键链接到外键(主键/客场/获胜团队ID)和表2,如下所示

我是一个比较新的人,我正在为一个体育联盟建立一个数据库。我有两张表,如下所示:

表1-团队:

  • 团队ID(自动编号,主键)
  • 名称(短文本)
表2-结果:

  • 游戏ID(自动编号,主键)
  • 主团队ID(表1中的外键)
  • 客场团队ID(表1中的外键)
  • 获胜团队ID(表1中的外键)
我制作了一个表格,显示了表2中的主客场/获胜团队ID,但是我确实很难显示团队名称(从表1的链接)

在表单的记录源中,我将表2链接到表1的三个副本,然后将三个表1中的主键链接到外键(主键/客场/获胜团队ID)和表2,如下所示

这为我提供了查看此查询结果时所需的确切数据

问题是,当我尝试在表单的设计视图中“添加现有字段”并保存它时,所有3个字段(主场、客场和获胜)都显示相同的值(主场值)

在我保存之前-正是我需要的:

保存后-右侧的字段已更改:

(注意:上面两张图片之间的区别是将右侧的
“Teams\u 1.Name”
更改为
“Teams.Name”


我不知道为什么,当我保存它时,它会自动更改为上面的内容。如果我添加字段,不保存,只转到布局视图,它工作得很好,但一旦我保存它,它会将所有字段更改为同一个字段。

出现此问题的原因是,在构成表单记录源的SQL代码中,这三个字段具有相同的字段名(尽管表限定符不同),因此,当MS Access验证表单上每个控件的控件源时,它会忽略表限定符,并在记录源中为第一个字段分配匹配的字段名

有两种方法可以解决此问题:

  • 为表单的记录源中的另外两个
    Name
    字段指定别名,例如:

    选择
    团队。命名为Home_团队,
    球队名称:客场球队,
    团队2.命名为获胜团队
    从…起
    (
    (
    结果留下来,请继续加入团队
    Results.Home\u Team\u ID=Teams.Team\u ID
    )
    左上以团队的形式加入团队
    Results.Away\u Team\u ID=Teams\u 1.Team\u ID
    )
    左以团队的形式加入团队
    结果.获胜团队ID=团队2.团队ID
    
  • 创建一个保存的查询,其中包含要在表单上显示的数据,然后将保存的查询指定为表单的记录源-使用此方法可以避免为字段指定别名

  • 就我个人而言,我建议使用上述第一种方法,因为表单上控件的控件源将更具描述性,并且更易于维护