繁体   English   中英

访问表单无法传递视图的主键(到 SQL 服务器)

[英]Access form fails to pass primary key of a view (to SQL server)

背景 - 设置:

  1. SQL 服务器表 (5)
  2. 在相同的表上查看,其中 Address 表的 ID 实际上是视图的 PK
  3. INSTEAD OF 在视图上触发插入、更新和删除
  4. INSTEAD OF UPDATE 触发器检查 4 个基表中的记录,如果它不存在则创建它(更多背景:这解决了视图更新失败的问题,因为并非所有 5 个基表都有记录)
  5. 使用链接表访问 db 到 5 个表和视图本身
  6. 显示并允许编辑视图的访问表单

问题:表单中记录的编辑失败,因为地址表的 ID 作为 NULL 传递。 “无法将 NULL 值插入列...” 这来自上面描述的 INSTEAD OF UPDATE 触发器。

为了解决这个问题,表单似乎必须在更新时将地址表的 PK 传递给视图。 尽管在 Access 的链接表中显示了 PK,但它并没有被传递。

让 Access 表单将视图的 PK 传递给视图中记录的任何和所有更新需要什么?

我会采用不需要子记录的设计。 (在查询中使用左连接)。

在 Access 中编辑相关数据往往表明每个表单都基于一个表。 如果您将焦点从主窗体移动到子窗体,Access 会自动保存主记录。

客户没有发票或没有预订旅行的事实应该无关紧要。 因此,大多数设计建议子记录不应存在,因此,对此类数据的大多数查询将是左连接。 这种方法将节省大量的工作。 我会尝试避免对包含多个表的 sql 进行更新。 作为一般规则,每个表单都应该直接基于一个链接表。 如果用户需要添加子记录,则提供具有允许此操作的正确子表单的 UI。 结果是每个表单(和子表单)只更新一张表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM