使用MS Access前端动态更新SQL Server中的记录的问题

时间:2016-01-18 18:56:00

标签: sql-server database vba ms-access

我管理和开发的数据库具有带有Access 2010前端的SQL Server 2014后端。它们使用ODBC连接进行连接。

在过去的几天里,一直存在更新具有一对多关系的特定表格的问题(比如表A和B,其中1 A有很多B)。在Access前端插入数据并且焦点从表As字段移到表B上时,与表A相关的所有字段都填充#DELETE。表B是表A形式的子表单中的记录源。

This is the result

我尝试直接编辑表格中的数据。我第一次这样做失败了,用#DELETE填充字段并显示以下消息。但是,我有时可以直接在表格中编辑和追加。有时当我回到我刚刚创建的记录并尝试更新它时,字段将填充#DELETE。这似乎很间歇。我知道它说另一个用户编辑了这行,但是这个代码在我只能访问的开发数据库上产生了同样的错误。

enter image description here

我确实尝试通过“编辑前200”选项从SSMS添加数据。但是,我得到了类似的结果:

enter image description here

在之前的所有示例中,数据都已添加到表中。但是,无论使用哪种UI都需要关闭并重新打开才能查看结果。可以使用SQL追加和更新表。但是,我希望在Access中将表单连接到表时具有灵活性,而不是在VBA中运行SQL。数据库中没有其他表像这样和 我似乎无法在网上找到与我完全相同的问题。

有谁知道为什么会这样,或者我应该在哪里开始寻找答案?

编辑:

我还应该指定两个表都有主键,所有位字段的默认值都是0,不允许空值,并且没有任何行为空的行。

2 个答案:

答案 0 :(得分:0)

所有必要的表上都有一个键,你是否有任何允许空值的位? Access不喜欢后者。

答案 1 :(得分:0)

我解决了这个问题。 Albert提出的添加时间戳字段的建议确实改善了情况,但并未解决所有情况下的整体问题。但是,我确实发现,当一个新条目在任何字段中包含null而不管数据类型或是否允许空值时,都会发生此问题。我为所有字段设置默认值,并在离开时设置问题。

我仍然觉得这不是一个完美的答案。我还是不知道为什么会这样。如果有人可以解释为什么会发生这种情况,那就太棒了。

以下是对确切问题的说明以及一些对我不起作用的解决方案的链接。但是,也许它会帮助别人: https://support.microsoft.com/en-us/kb/128809