access2021 条件に当てはまるとレコードを移動させない

実現したいこと

accessのフォームで「レコード移動時」「開くとき」に処理を置き条件に当てはまる場合だけレコードを開きたいのですが、キャンセルの処理が起動せずレコードの移動ができてしまいます。
どのように変更すればレコードの移動を防ぐことができるでしょうか?

発生している問題・分からないこと

「レコード移動時」の処理を作成することができないです。

使用しているフォームのレコードソースのクエリから「レコードロック」というレコードがあり、Trueの場合そのレコードへの移動をさせなくしたいです。
下記のコードにて実行しましたが、エラーはなくメッセージボックスだけ表示され移動ができてしまいます。

該当のソースコード

Private Sub Form_Current() Dim Cancel As Integer 閉じる_ボタン.Enabled = True If Me.レコードロック = True Then MsgBox "別の使用者による変更があるためロックされました。更新が終わるまで変更はできません。", vbOKOnly + vbExclamation, "レコードロック" Cancel = True Else キャンセル.Enabled = False 更新_ボタン.Enabled = False End If End Sub

試したこと・調べたこと

上記の詳細・結果

・フォームを「開くとき」にも同様の処理を行いたいため実行させたのですが、こちらはうまく起動しました。

コード

Private Sub Form_Open(Cancel As Integer)
閉じる_ボタン.Enabled = True

If Me.レコードロック = True Then

Cancel = True
MsgBox "別の使用者による変更があるためロックされました。更新が終わるまで変更はできません。2", vbOKOnly + vbExclamation, "レコードロック"

Else
キャンセル.Enabled = False
更新_ボタン.Enabled = False
End If
End Sub

・()の中に「Cancel As Integer」が必要かと思い実行しましたが、エラーが表示されフォーム自体が開かなくなります。

実行エラー 2501
Open Form アクションの実行は取り消されました。

コード

Private Sub Form_Current(Cancel As Integer)
閉じる_ボタン.Enabled = True

If Me.レコードロック = True Then

MsgBox "別の使用者による変更があるためロックされました。更新が終わるまで変更はできません。", vbOKOnly + vbExclamation, "レコードロック"
Cancel = True

Else
キャンセル.Enabled = False
更新_ボタン.Enabled = False
End If
End Sub

補足

この処理は同時処理を防ぐためVBAによる作成を目指しています。

Microsoft access2021
フォームは単票フォームを設定しています。
テーブルはSQL serverとリンクしています。

コメントを投稿

0 コメント