MS Access データベース (.accdb ファイル拡張子、SQL データベースのフロント エンドではありません) にレコードを挿入するサードパーティ ソフトウェア (Pro-face Pro-Server EX) を使用しています。Pro-Server EX ソフトウェア側でプロセスを構成する方法は、データベースにデータを挿入のみとして送信することです (更新を実行するために既存のレコードを検索するように構成する方法はありません)。既存のデータ (主キーである ID フィールドを持つ) を含むデータベースを持っている顧客がいます。顧客は、ID に基づいて既存のレコードを更新することだけを望んでいます。次のようなトリガーを構成する SQL でこれを行う方法を知っています。
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 seqno=@seqno,Data1=@Data1 WHERE seqno=@seqno
END
ELSE
BEGIN
INSERT INTO [dbo].[Table1] (seqno, Data1) VALUES (@seqno, @Data1)
END
END
ただし、MS Access クエリやトリガーの経験はあまりありません。このコードを MS Access クエリの SQL ビューにコピーしようとすると、いくつかのエラーが発生するため、これは実際には MS Access のオプションではないようです。
MS Access で使用できるトリガーを使用したことはありませんが、使用できる最も近いトリガーは「変更前」であると思われます。これは、「変更を検証するためにレコードが保存される前に実行されるロジックを作成し、次に、新しい値を許可するか、値を変更するか、エラーを表示して変更を停止するかを決定します。[IsInsert] プロパティを使用して、イベントが挿入か更新かを判断してください。この説明は、このトリガーは、データがデータベースに既に書き込まれているが保存されていない場合にのみ作動することを示しています。そのため、更新を実行するために一致する ID が既に存在するかどうかを判断するために使用することはできず、存在しない場合は、次に、挿入を実行します。これを正しく解釈していますか?
MS Access で探していることを実行する方法はありますか?