我对Access来说还比较陌生,我正在努力为体育联赛建立一个数据库。我有2个表,如下所示:
表1-团队:
表2-结果:
我已经制作了一个表格,显示表2中的主场/客场/胜利队ID,但是我真的很难显示队名(通过表1的链接)。
在表单的“记录源”中,我已将表2链接到表1的三个副本,然后将主键从三个表1链接到外键(Home / Away / Winning_Team_ID)到表2,如下所示:见下文。
这为我提供了我查看此查询结果时所需的确切数据。
问题是,当我尝试将“添加现有字段”添加到窗体的“设计”视图中然后保存时,所有3个(本垒,客场和中奖)都显示相同的值(本垒值)。
(注意:以上两张图片之间的区别是从右侧的"Teams_1.Name"
更改为"Teams.Name"
)
我不知道为什么保存时它会自动变为以上内容。如果我添加字段但不保存而只是进入布局视图,则它可以正常工作,但是一旦保存,它将所有字段都更改为同一字段。
答案 0 :(得分:1)
出现此问题的原因是,由于三个字段在构成表单的记录源的SQL代码中具有相同的字段名称(尽管表限定符不同),因此,当MS Access在以下位置验证每个控件的控件源时:表单时,它会忽略表限定符,并在“记录源”中为第一个字段分配匹配的字段名称。
有两种方法可以解决此问题:
为表单的“记录源”中的其他两个Name
字段分配别名,例如:
select
Teams.Name as Home_Team,
Teams_1.Name as Away_Team,
Teams_2.Name as Winning_Team
from
(
(
Results left join Teams on
Results.Home_Team_ID = Teams.Team_ID
)
left join Teams as Teams_1 on
Results.Away_Team_ID = Teams_1.Team_ID
)
left join Teams as Teams_2 on
Results.Winning_Team_ID = Teams_2.Team_ID
创建一个保存的查询,其中包含您希望在表单上显示的数据,然后将保存的查询指定为表单的记录源-使用此方法避免了为字段分配别名。 / p>
就个人而言,我建议使用上述第一种方法,因为表单上控件的控件源将更具描述性,并且更易于维护。