【问题标题】:Access 2010 error when moving focus to subform or acSaveRecord将焦点移动到子窗体或 acSaveRecord 时出现 Access 2010 错误
【发布时间】:2017-01-09 21:30:31
【问题描述】:

所以我在 Acess 2010 中有一个表单,其中包含两个子表单来管理一对多关系,对于项目和任务,它们绑定到 SQL Server 上的两个链接表,因此每当我加载项目时,任务都会列在子窗体。

最近,每当我从主窗体上的字段移动到子窗体的任何区域时,都会遇到错误on primary key violation。这告诉我主表单正在尝试保存它加载的任何内容,但它不是 UPDATE,而是尝试插入。

我看不到可以执行该特定命令的代码或事件(例如更新之前或之后)。表单上有一个保存按钮,这个按钮使用DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70,它会产生同样的错误。

有没有办法指示 Access 使用 UPDATE 而不是 INSERT?

我一直在四处寻找,但似乎没有找到任何相关的解决方法。

谢谢大家!

编辑:我尝试删除链接表上的主键并且错误消失了,但正如怀疑的那样,每次我移动到不同的记录或单击子表单时它都会插入重复项。因此,如果有人对记录导航行为以及如何配置有任何线索,我将不胜感激!

【问题讨论】:

  • 如果您在添加模式下打开表单,它将默认为插入。同样在编辑中打开,默认为更新。您还没有显示任何代码或您的表单是如何链接的,所以我们在这里帮不上什么忙
  • 实际上,您提供的帮助比您想象的要多,我对 Access 表单没有太多经验,当我加载表单时,我可以看到主表单代码中没有要执行的操作没有指定方法,所以我尝试使用DoCmd.OpenForm stDocName, , , stLinkCriteria, acFormEdit 来尝试您提到的内容(我不知道这一点,谢谢)但似乎它并没有改变大小写......每当您单击时,表单仍然会抛出错误子窗体上的任何位置或尝试移动到下一条记录...它仍然尝试插入然后违反 PK。
  • 顺便说一句,我正在使用绑定表单。
  • 检查当您尝试输入新值时两个表之间的关系键没有被更改。例如,如果您有一个 FK 在您尝试添加或编辑值时会自动填充到子表单上,请确保它仍在引用父表单上的正确键。
  • 谢谢 Erick,我已经从表单中删除了子表单,表格没有 FK,所以现在我只是将我的主表单绑定到主表并且它有它的 PK(它的类型是 text btw ...我不喜欢但我无法更改它)并且问题仍然存在,每次我尝试移动到表单上的另一条记录时它都会尝试插入。

标签: ms-access vba ms-access-2010 subform


【解决方案1】:

如果 SQL 表上有触发器,则可能是触发器在调用 INSERT 语句,而不是前端。

【讨论】:

  • 我检查过,但表上没有触发器。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-27
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多