【问题标题】:Don't enter record if already exists, access linked table to sql已经存在的不输入记录,访问链接表到sql
【发布时间】:2013-07-11 13:21:18
【问题描述】:

我有一个具有访问前端和 sql 后端的应用程序。

它曾经是 Access=>Access,但它被迁移了。

问题出现在链接表中,其中输入已存在的记录用于仅显示用户友好(此记录已存在)消息。

但是现在出现了一条非用户友好的 sql 消息。(违反 PK 等)

我打算用一个代替触发器来解决它(还没有尝试过)

还有其他方法吗?来自 Access 本身的首选。

【问题讨论】:

  • 使用无访问权限,但可以使用触发器
  • 您可能会使用错误处理代码(如果可以捕获此 sql 错误)。很多人这样做,依赖 PK 违规,而不是检查现有记录。
  • 是的,确实听起来更好
  • "你能先检查该行是否存在吗" - 我必须认为你可以做到这一点,使用典型的 VBA 解决方案,BeforeUpdate() ...或者它可能不是那个函数,因为这个是一个记录添加,但在任何情况下都应该是直截了当的。
  • @Smandoli 很遗憾,因为访问认为我正在直接编辑表格 - 不是在列表或表单中,没有 VBA 操作也没有宏..只是验证规则。

标签: sql ms-access triggers linked-tables


【解决方案1】:

您可以使用代码执行此操作,但也可以仅使用 SQL 执行此操作。假设column1 是主键,下面是一个例子:

INSERT INTO MyTable ( column1, column2 )
SELECT column1,
  column2
FROM MyOtherTable AS a
WHERE NOT EXISTS ( SELECT 1
  FROM MyTable AS b
  WHERE b.column1 = a.column1 );

在本例中,我使用SELECT 1,因为我只是检查是否返回了一行,而不关心实际返回的内容。如果插入了零行,您的代码就会显示用户友好的错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 2020-05-15
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    相关资源
    最近更新 更多