我有一个第三方软件(Pro-face的亲服务器EX)被插入记录到MS Access数据库(.accdb文件扩展名,不SQL数据库的前端)。该过程是在临服务器EX软件方面的配置方式是,它仅作为插入(有没有办法来配置它来搜索现有的记录执行更新)到数据库中发送数据。我们有一个客户拥有一个数据库,其中包含预先存在的数据(带有主键的ID字段),他想要做的就是根据ID更新现有记录。我知道在SQL做到这一点的方法,我将配置类似以下的触发:使用的MS Access触发和/或querys来插入或更新记录
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[update_table]
ON [dbo].[Table1]
INSTEAD OF INSERT
AS
DECLARE @seqno int
DECLARE @Data1 int
BEGIN
SET @seqno = (Select seqno from INSERTED)
SET @Data1 = (Select Data1 from INSERTED)
IF EXISTS (SELECT seqno FROM [dbo].[Table1] WHERE seqno = @seqno)
BEGIN
UPDATE [dbo].[Table1] SET [email protected],[email protected] WHERE [email protected]
END
ELSE
BEGIN
INSERT INTO [dbo].[Table1] (seqno, Data1) VALUES (@seqno, @Data1)
END
END
但是我没有用的MS Access querys和/或触发尽可能多的经验。当我试图将这段代码复制到MS Access查询的SQL视图中时,我得到了一些错误,所以看起来这不会成为MS Access的一个选项。
我从来没有使用MS Access中可用的触发器,但看起来最接近的可以使用的是“更改前”,它被描述为“创建保存记录之前运行的逻辑验证更改,然后决定允许新值,更改值或显示错误以停止更改。使用[IsInsert]属性确定事件是插入还是更新。“这说明告诉我,一旦数据已经写入到数据库触发器将只被绊倒,但不能保存,所以真的不能被用来确定是否匹配的ID已经存在执行更新,如果没有,然后执行插入。我解释正确吗?
有没有办法做什么,我在MS Access找?
Access没有触发器像MSSQL一样。 Access通常使用表单或报表中的事件来处理数据操作。软件是否直接链接Access表以执行插入操作或完成的具体内容? –
@random_answer_guy - Access 2010及更高版本确实具有事件驱动的[数据宏](https://support.office.com/zh-cn/article/Create-a-data-macro-b1b94bca-4f17-47ad-a66d- f296ef834200),它们在表级别上运行并且有点像触发器。 –
@GordThompson - 正确的,我正在使用MS Access 2010.关于插入,软件(Pro-Server EX)有一个配置为使用指针文件(在本例中是另一个.accdb文件)的动作数据库,表和字段写入数据。然后软件在后台生成并执行INSERT语句,因此如果不更改软件,则无法对其进行修改。这需要一些时间,但我们有一位客户现在正在寻找解决方案。 –