切换到 Sharepoint 后端后主窗体错误链接到子窗体 - MS Access
Main form mislinking to subform after switching to Sharepoint back end - MS Access
为什么我的 form/subform 使用 SharePoint 列表后端会误链接记录?
我有多年使用 MS Access 的经验,但这是我第一次使用 SharePoint 列表作为后端。
我为一个小型非营利组织开发了一个小型数据库。从位于一个用户计算机上的 Access 365 前端和后端开始。这 运行 好几个月了,上个月我们将后端迁移到 SharePoint 列表,以便其他两个用户可以使用该数据库。他们每个人的桌面上都有前端。
有一个绑定表单,事件,链接到 tblEvents。此表单上的子表单 subVolTime 链接到 tblVolTime,以显示志愿者以及他们在活动中花费了多少时间。在子表单 属性 中,Link Master Fields 设置为 tblEvents.ID; Link 子字段设置为 tblVolTime.EventID。没有额外的 VBA 代码。
我们使用向导迁移到 SharePoint 列表,没有做任何其他事情。不久之后,我的用户注意到错误的人出现在事件中。他光看名字就知道了
我创建了一个审计查询,我可以看到在某些情况下,tblVolTime 中的添加日期(创建记录的日期)早于 tblEvent 中事件的添加日期。这不可能是正确的,因为您必须在 tblVolTime 中的关联记录之前在 tblEvent 中有记录。
例如,有一个事件 ID 261,创建于 2021 年 11 月 4 日。与此事件 ID 相关联的志愿者的记录是在 2021 年 10 月 7 日创建的。出现了问题。
欢迎提出任何建议。我的想法包括:解除绑定表单;隐藏子窗体,直到事件记录被保存;在用户实际向其中添加任何数据之前创建事件记录。
好吧,很难说。但是,不像将 Access 数据移动到 SQL 服务器?
将数据移动到 SharePoint 是一个非常不同的过程。为什么?
首先,当将数据移动到 SharePoint 时,您拥有的自动编号 PK(并且您必须拥有所有表格)经常被重新编号。
现在,由于自动编号的重新编号?
好吧,这意味着在您迁移数据之前,您最好确实,但确实并且更确定地确定在这些 table 之间建立了关系。
就 Access 而言,虽然在大多数情况下我们确实有正确设置的关系,但老实说,您真的不必这样做。换句话说,如果我为子表单设置主 link 和子 link ?那么,access 只会为主table 生成PK 自动编号,为子table 生成pk 自动编号。并且然后在数据插入期间将正确地 insert/set 那个子 table 中的“FK”值到父 table。只要正确设置 link master/child 设置(但没有设置实际关系),应用程序就可以正常工作。
如果要迁移数据到SQL服务器呢?好吧,由于在此上传过程中未触及 PK 自动编号 - 因此所有关系及其数据也将有效访问 SQL 服务器。
但是,对于 SharePoint 而言? ALL table 的自动编号已经并且将在大多数情况下重新生成!!!!
但是,如果您使用 Access 放大数据,这往往不是问题。它内置了 SharePoint 支持,如果父 reocrd 从 Access 上升到 sharepoint 并且 PK id 已更改?没有问题,因为如果你真的做了设置,而且你真的有一个关系设置,那么迁移过程就足够聪明,可以找到子 reocrds,并更新 FK 值。但是,当然,如果您知道关系,迁移过程只能做这个魔术。
再举个简单的例子?
假设我们有一个简单的表单,并且我们有一个 SMIPLE 组合框来选择喜欢的颜色。
tb颜色
ID(自动编号 PK)。
Color(文字颜色).
所以,现在我们有了一个简单的表单,我们放入了一个组合框。当我们从组合中选择像“红色”或“蓝色”这样的简单颜色时,我们当然会保存上面 table.
中的“pk”id
现在有很多像上面一样的简单 tables,从未使用过,也没有为设置 realtonship 而烦恼。 (不需要 - 只需从组合框中选择几个选项)。
如果您将数据上传到 sql 服务器?同样,这会很好用 - 完全没问题。
但是,如果您升级到 SharePoint?你真的但真的更好地为这个简单的愚蠢的小组合框建立了关系。同样,原因很简单。当这个简单的 table 选择列表值上传到 SharePoint 时,自动编号 PK id 将发生变化。因此,对于使用该简单选择列表的任何其他 table?您已经并且必须在您的关系中设置 window 这实际上是关系 - 再一次,原因是自动编号的重新编号。
那么对于任何使用 PK 和 FK 值的关系?在传输该数据之前,在使用 SharePoint 的所有情况下,必须在访问数据 tables(关系 window)中定义它们。同样,原因很简单 - 在上传到 SharePoint 的过程中,自动编号会发生变化!!!由于它们发生了变化,因此使用这些 PK 值(作为 FK)的任何其他相关 table 必须是已定义关系的一部分。如果在迁移到 SharePoint 之前未定义它们,则 PK 值的更改不会告诉 SharePoint 去查找并正确更新所有“子”记录或所谓的 FK 值。
所以,第一个要问的问题是相关数字的这种中断是很久以前发生的(在迁移时),还是由于某些错误代码或选择了错误的值而导致这种中断?
因此,将相关数据迁移到 SharePoint 是一个“微妙”的操作,当然主要原因是相关的 table 在迁移之前已经设置为强制关系。如果未严格定义此类关系,则在迁移过程中,基于这些 PK/FK 值的数据关系将在迁移时中断。
现在,这个有问题的子表单没有正确的 link master/child 设置可能是一个简单的问题 - 这是首先要检查的事情。
为什么我的 form/subform 使用 SharePoint 列表后端会误链接记录?
我有多年使用 MS Access 的经验,但这是我第一次使用 SharePoint 列表作为后端。
我为一个小型非营利组织开发了一个小型数据库。从位于一个用户计算机上的 Access 365 前端和后端开始。这 运行 好几个月了,上个月我们将后端迁移到 SharePoint 列表,以便其他两个用户可以使用该数据库。他们每个人的桌面上都有前端。
有一个绑定表单,事件,链接到 tblEvents。此表单上的子表单 subVolTime 链接到 tblVolTime,以显示志愿者以及他们在活动中花费了多少时间。在子表单 属性 中,Link Master Fields 设置为 tblEvents.ID; Link 子字段设置为 tblVolTime.EventID。没有额外的 VBA 代码。
我们使用向导迁移到 SharePoint 列表,没有做任何其他事情。不久之后,我的用户注意到错误的人出现在事件中。他光看名字就知道了
我创建了一个审计查询,我可以看到在某些情况下,tblVolTime 中的添加日期(创建记录的日期)早于 tblEvent 中事件的添加日期。这不可能是正确的,因为您必须在 tblVolTime 中的关联记录之前在 tblEvent 中有记录。
例如,有一个事件 ID 261,创建于 2021 年 11 月 4 日。与此事件 ID 相关联的志愿者的记录是在 2021 年 10 月 7 日创建的。出现了问题。
欢迎提出任何建议。我的想法包括:解除绑定表单;隐藏子窗体,直到事件记录被保存;在用户实际向其中添加任何数据之前创建事件记录。
好吧,很难说。但是,不像将 Access 数据移动到 SQL 服务器?
将数据移动到 SharePoint 是一个非常不同的过程。为什么?
首先,当将数据移动到 SharePoint 时,您拥有的自动编号 PK(并且您必须拥有所有表格)经常被重新编号。
现在,由于自动编号的重新编号?
好吧,这意味着在您迁移数据之前,您最好确实,但确实并且更确定地确定在这些 table 之间建立了关系。
就 Access 而言,虽然在大多数情况下我们确实有正确设置的关系,但老实说,您真的不必这样做。换句话说,如果我为子表单设置主 link 和子 link ?那么,access 只会为主table 生成PK 自动编号,为子table 生成pk 自动编号。并且然后在数据插入期间将正确地 insert/set 那个子 table 中的“FK”值到父 table。只要正确设置 link master/child 设置(但没有设置实际关系),应用程序就可以正常工作。
如果要迁移数据到SQL服务器呢?好吧,由于在此上传过程中未触及 PK 自动编号 - 因此所有关系及其数据也将有效访问 SQL 服务器。
但是,对于 SharePoint 而言? ALL table 的自动编号已经并且将在大多数情况下重新生成!!!!
但是,如果您使用 Access 放大数据,这往往不是问题。它内置了 SharePoint 支持,如果父 reocrd 从 Access 上升到 sharepoint 并且 PK id 已更改?没有问题,因为如果你真的做了设置,而且你真的有一个关系设置,那么迁移过程就足够聪明,可以找到子 reocrds,并更新 FK 值。但是,当然,如果您知道关系,迁移过程只能做这个魔术。
再举个简单的例子? 假设我们有一个简单的表单,并且我们有一个 SMIPLE 组合框来选择喜欢的颜色。
tb颜色 ID(自动编号 PK)。 Color(文字颜色).
所以,现在我们有了一个简单的表单,我们放入了一个组合框。当我们从组合中选择像“红色”或“蓝色”这样的简单颜色时,我们当然会保存上面 table.
中的“pk”id现在有很多像上面一样的简单 tables,从未使用过,也没有为设置 realtonship 而烦恼。 (不需要 - 只需从组合框中选择几个选项)。
如果您将数据上传到 sql 服务器?同样,这会很好用 - 完全没问题。
但是,如果您升级到 SharePoint?你真的但真的更好地为这个简单的愚蠢的小组合框建立了关系。同样,原因很简单。当这个简单的 table 选择列表值上传到 SharePoint 时,自动编号 PK id 将发生变化。因此,对于使用该简单选择列表的任何其他 table?您已经并且必须在您的关系中设置 window 这实际上是关系 - 再一次,原因是自动编号的重新编号。
那么对于任何使用 PK 和 FK 值的关系?在传输该数据之前,在使用 SharePoint 的所有情况下,必须在访问数据 tables(关系 window)中定义它们。同样,原因很简单 - 在上传到 SharePoint 的过程中,自动编号会发生变化!!!由于它们发生了变化,因此使用这些 PK 值(作为 FK)的任何其他相关 table 必须是已定义关系的一部分。如果在迁移到 SharePoint 之前未定义它们,则 PK 值的更改不会告诉 SharePoint 去查找并正确更新所有“子”记录或所谓的 FK 值。
所以,第一个要问的问题是相关数字的这种中断是很久以前发生的(在迁移时),还是由于某些错误代码或选择了错误的值而导致这种中断?
因此,将相关数据迁移到 SharePoint 是一个“微妙”的操作,当然主要原因是相关的 table 在迁移之前已经设置为强制关系。如果未严格定义此类关系,则在迁移过程中,基于这些 PK/FK 值的数据关系将在迁移时中断。
现在,这个有问题的子表单没有正确的 link master/child 设置可能是一个简单的问题 - 这是首先要检查的事情。