Access 链接表只显示一对一的关系

Posted

技术标签:

【中文标题】Access 链接表只显示一对一的关系【英文标题】:Access linked table only shows one to one relationship 【发布时间】:2018-12-26 23:57:15 【问题描述】:

我将 Access 表链接到 SQL Server 后端。我正在将我的一些 MS Access 查询转换为 SQL Server 视图。在 SQL Server 中查询(视图)的设计视图中,我可以看到有的连接表是一对多的关系,有的则是一对一的关系。但是,当我在 MS Access 中打开查询时,每个关系都显示一对一的关系。

MS Access 中也没有数据库图,因为它是链接表。由于这个原因,MS Access 查询返回的记录少于 SQL Server 视图。我希望某些查询保留在 MS Access 中,但由于链接表中不存在任何关系,这是否意味着我必须将每个查询都转换为 SQL Server 视图?

【问题讨论】:

【参考方案1】:

其实前端相关表格的显示真的无所谓。

该图表实际上只是为了您的方便。它显示的内容并不一定反映您在 sql server 上的关系。

在过去,当您在 Access 中构建查询时,该关系图从未对返回的行数产生任何影响。

当您使用 Access 查询构建器时,您可以在任何您想要的表之间建立和选择任何关系——即使是没有意义的关系。

前端不能在 SQLServer 上强制执行任何类型的关系,因为如果前端可以,那么 5 个不同的前端会发生什么,每个前端都定义了不同的关系?

因此,SQLServer 会忽略您在 Access 中看到的关系。事实上,这也适用于使用 Access 后端。您总是在数据库端定义关系,而不是前端。

关于已定义关系的唯一真正优势是某些表单向导可以使用图表来帮助您。如果您启动 Access 查询构建器并放入一些表 - 那么这些表将根据关系窗口为您绘制(设置)连接。但是,即便如此,您也可以删除连接线,并根据需要连接表 - 包括无意义的连接。

因此,当您使用网站连接到 amazon.com 时,您的 Web 浏览器或“客户端”计算机无法向服务器指示强制关系 - Access 客户端、vb.net 或 FoxPro 也不能连接到 sql 服务器。您只能在服务器端定义关系——客户端根本无法更改您设置的 sql 服务器端的规则。

当您将 Access 表链接到 SQLServer 时,您不会看到关系出现在关系窗口中。

当然,在查询构建器中,您会看到关系,但它们不是强制的关系。您可以并且始终在查询构建器中构建您想要的任何类型的连接。您如何设置此类查询与关系窗口中的强制关系为零。

因此,您可以使用 Access 中的查询生成器在表之间选择任何您想要的连接 - 包括根本没有意义的连接。

如果您已将数据迁移到 SQLServer,那么您现有的非接触式查询(访问端)应该会继续返回相同的结果。

您在 SQLServer 上拥有的图表(以及定义的关系不会归结为客户端图表)。

如果您在 SQLServer 上构建视图,那么您必须密切关注如何构建该视图,尤其是左连接与“正常”或所谓的内部连接。

我已经将 Access 数据库迁移到 sql server 超过 15 年了,并且在迁移后我从来没有遇到过 Access 查询返回不同的结果。测试 Access 查询,它应该返回与以前相同的结果。

当然,如果您将查询转换为视图,那么所有的赌注都没有了,因为您现在用不同的方言和版本的 sql 重新编写查询——在这种情况下需要密切注意。但是,即使将查询移至 SQLServer,也很少会得到不同的结果。

因此,即使没有 sql server,关系图窗口也与您在查询构建器中构建查询的方式无关。您设置的关系不会改变查询的工作方式。强制关系将阻止您在未设置记录所属的“客户”(在客户表中)的情况下将发票添加到发票表中。但是,查询生成器不会阻止您编写错误的 sql(包括 SQLServer 或 Access 查询生成器),它们不会真正受到强制关系的任何影响。

您可以在两边(SQL 或 Access)编写错误的 sql。并且通过“坏” sql,那将是不反映您在表之间建立和假定的关系的 sql。

【讨论】:

以上是关于Access 链接表只显示一对一的关系的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 子窗体不显示记录且不导航

访问不为 MySQL 链接表导入关系

Access 2010 中 1:M Join 的左表中仅显示唯一记录

表关系(一对一,一对多,多对多)

通过链接到SQL Server数据库的MS Access以多对多关系插入数据(中间表)

Django:是否可以通过模型的PK将模型的FK链接到一对多关系?