访问表单“跳转”到保存的另一个记录。访问前端,SQL Server后端。根据数据库触发器跳转到ID

时间:2018-11-30 15:57:12

标签: sql sql-server ms-access triggers

这里有些古怪,我一直在拔头发。

该项目是Access前端,最近已将表移至SQL Server后端。 Access将为最终用户提供表单/报告/等工具。

一种奇怪的行为浮出水面。创建新记录并将任何给定数据添加到任何给定子窗体时,保存该数据后,子窗体会“跳转”到另一个记录。输入的数据被正确保存。如果刷新主窗体,则子窗体中显示的数据是准确的。只有将数据保存在子窗体中之后,显示的记录才会跳转。

  

示例:这是一个员工数据库。我们添加了一个新员工(鲍勃)。有一个用于教育和证书的子表单。我们输入Bob的凭据。我们在子窗体外导航(或手动保存,无论哪种方式)。然后,Bob的凭据“跳转”到另一组凭据。 (比方说杰克的)。 Bob的凭据已保存,如果刷新Bob的视图,我们会看到它们,但直到那时我们才看到Jack的凭据。 Jack的凭证记录不会以任何方式更改。

起初,我认为它跳转到的位置是完全随机的。事实并非如此。

最近,非常需要为此数据库构建审核日志。为此设置了一系列触发器。基本的东西。对于每个获取更新,删除或插入的表,捕获该更改并将其记录下来。在此流行的Pop Rivetts solution上使用的触发器略有不同。

之所以提到此审核日志,是因为我注意到子窗体跳转到的记录的PK等于审核日志中条目的PK。

  

示例2 :Bob已添加到数据库中。我们转到Bob的子表单并添加他的凭据。该插入命令将触发触发器,审计表将更新为三行,插入行中的每个字段一行。在审核表中,有一个称为“ ID”的PK,最后一个条目的ID为379。然后,凭证子表单“跳转”到凭证记录中,凭证记录的PK为379。

因此,基本上,Access会根据为表生成的ID将子表单刷新到某个位置,该ID与该子表单所基于的实际表无关。

关于如何遏制或修复此行为的任何想法?如果用户每次添加新人时都必须刷​​新表单,则没有任何意义。还应注意,这仅是新的。编辑/更新现有记录?没问题。这些也会触发相同的触发器,并使审核日志条目全部相同。只是在插入/新建。

0 个答案:

没有答案
相关问题