見積システムを作成していまして、ロックの処理をVBAにて作成しました。
リストを開くとき、「見積」テーブルにある「レコードロック」というレコードがTrueになります。
そのため別の使用者が開いた際、ロックがかかり開けないという仕組みになっています。
<リストの開いた時のコード>
Private Sub Form_Open(Cancel As Integer)
On Error Resume Next
If Me.レコードロック = True Then
MsgBox "別の使用者がいるため開くことができません。", vbOKOnly + vbExclamation, "レコードロック"
Cancel = True
Else
閉じる_ボタン.Enabled = True
キャンセル.Enabled = False
更新_ボタン.Enabled = False
一覧に反映.Enabled = False
End If
End Sub
リストを開けない時、メッセージボックスにて"別の使用者がいるため開くことができません。"と表示されるのですが
これを"○○が使用しているため開くことができません。"と変更したいです。
「○○」はリストを開いた時点で自動で取得するように作成すべく、
「見積」テーブルにある「レコードロック者」というレコードに記入するため追加クエリを作成しました。
<追加クエリのSQLビュー>
UPDATE Q_見積 SET Q_見積.[レコードロック者] = a()
WHERE (((Q_見積.見積番号)=[forms]![リスト]![見積番号]));
内容としましてはリストにある見積番号とテーブルにある見積番号が同じの場合、「見積」のテーブルの該当する見積番号のレコードロック者にコンピューター名を入れる処理です。
「○○」をコンピューター名にするため「a」という変数を作成し開いた時のコードを変更しました。
<リストの開いた時のコード 変更後>
Private Sub Form_Open(Cancel As Integer)
On Error Resume Next
Public a As String
If Me.レコードロック = True Then
MsgBox "別の使用者がいるため開くことができません。", vbOKOnly + vbExclamation, "レコードロック"
Cancel = True
Else
a = Environ(“ComputerName”)
DoCmd.SetWarnings False
DoCmd.OpenQuery "追加クエリ"
DoCmd.SetWarnings True
閉じる_ボタン.Enabled = True
キャンセル.Enabled = False
更新_ボタン.Enabled = False
一覧に反映.Enabled = False
End If
End Sub
しかし、リストを開くことはできますがレコードロック者に名前が追加されることはなかったです。
追加クエリを確認すると「式に未確定関数'a'があります。」と表示されました。
どのように変更すればよいでしょうか?
ご教授の方、お願い致します。
<備考>
・Microsoft access2021
・windows11 home、64ビット
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
状況が良く分かっていないので『怪答』かもしれません。
フィールドを一個追加して(名前を仮にWhoとします)フォームにも配置。
で、
>Private Sub Form_Open(Cancel As Integer)
>On Error Resume Next '※現段階でResume NextしてるとDebugで混乱するかと
の時に
If nz(Me!Who,"")="" then
me!Who=environ("computername") 'この時Accessでレコードロックされるはず
else
msgbox me!Who & "が使用中なのでバイバイ",vbokonly
Cancel=true
end if
end sub
※フォームをCloseする時には
me!who=""
で戻す
ではいかが?
余談ですが
>DoCmd.SetWarnings False
>DoCmd.OpenQuery "追加クエリ"
>DoCmd.SetWarnings True
アクションクエリ(更新・追加・削除)の実行確認が出るのを止めるために
Setwarningsしてますが
Currentdb.execute(Sql文)なら確認のメッセージが出ません。
Dim sSql as string
sSql="UPDATE Q_見積 SET Q_見積.[レコードロック者] ='" & environ("computername") & "'"
ssql=ssql & "WHERE (((Q_見積.見積番号)=" & [forms]![リスト]![見積番号] & "));"
currentdb.execute ssql,dbfailonerror
みたいな感じです。
ご参考まで。
ご回答ありがとうございます。
me!Who=environ("computername")
この処理で追加したフィールド、「who」にコンピューター名が登録されるのと思われるのですが、レコードをコピーし実際に起動したところエラーは起きませんでしたがコンピューター名が追加されることもなかったです。
恐らくですが、見積番号とテーブルにある見積番号が同じの場合フォームを開くため追加で条件式が必要です。
WHEREにて追加するでしょうか?
余談についてVBAの提示ありがとうございます。
同様のレコードが大量にあるため、検討させていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
【お題】・忍者がやってるYouTubeが炎上してしまった理由
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
コーピングについて教えてください
皆さんはストレスを感じたとき、どのような方法や手段、テクニックで対処していますか?
-
【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
【お題】追い込まれた犯人が咄嗟に言った一言とは?
-
Excelの表示についての質問
Excel(エクセル)
-
表中の指定した条件の文字列を結合する方法について
Excel(エクセル)
-
EXCELのページを、枠線を維持したまま印刷する方法をありませんか?
Excel(エクセル)
-
-
4
Excelの数式の効率化について
Excel(エクセル)
-
5
エクセルで数字の組み合わせを列記したい
Excel(エクセル)
-
6
【ExcelVBA】UTF-8(BOM無)でCSV保存するには?
Excel(エクセル)
-
7
【ExcelVBA】最終行の取得で困ってます
Excel(エクセル)
-
8
【マクロ】functionプロシージャの、変数について
Excel(エクセル)
-
9
【Excel】版が同じ事を示す番号を生成したい
Excel(エクセル)
-
10
Excelの時刻の不思議
Excel(エクセル)
-
11
エクセルでの2項目比較および抽出方法について
Excel(エクセル)
-
12
今までは、 「CSVの出力先を選択してください。」 という画面から、CSVファイルをデスクトップに引
Excel(エクセル)
-
13
考えた式の戻り値が期待通りにならない
Excel(エクセル)
-
14
エクセルシート保護を解除させない方法。
Excel(エクセル)
-
15
Excelファイルで毎月各支店から名簿が送られて来ます。毎月人数の上下があります。様式はおなじですが
その他(Microsoft Office)
-
16
access2021 テーブルから複数のフィールド値を取得したい
Access(アクセス)
-
17
Excelを無料で使うには? パソコン購入して、マイクロソフトに登録して そのままExcelがデスク
Excel(エクセル)
-
18
Excel 数式バーの情報を、別シートにセル上で表記する方法を教えてください
Excel(エクセル)
-
19
ACCESSデバック画面
Access(アクセス)
-
20
セル内が空白設定なのに#N/Aと出てくるのを回避する方法を教えてください。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでレコードの複製
-
Access 指定したレコードへ移動
-
アクセエスのレコードの更新をV...
-
ACCESS 複数のフォームから同一...
-
Accessフォームで詳細内の任意...
-
ファイルメーカーで重複してイ...
-
Accessレコードの削除(VBA)
-
Accessのレコード数をテキスト...
-
access の 最終レコードの判定...
-
AccessのRefresh・Requery・Rep...
-
ACCESSのカレントレコードを、w...
-
AccessVBA フィルタとカレント...
-
ACCESSフォーム入力後の確定
-
アクセスのコンボボックスの内...
-
Accessの「Form_AfterUpd...
-
禁止文字をエクセルかアクセス...
-
新しいレコードへの移動時にト...
-
accessでオートナンバーを使わ...
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS 複数のフォームから同一...
-
Accessでレコードの複製
-
ACCESSフォーム入力後の確定
-
Accessフォームで詳細内の任意...
-
AccessのRefresh・Requery・Rep...
-
accessでオートナンバーを使わ...
-
Accessで経過日付に応じて色を...
-
アクセエスのレコードの更新をV...
-
access の 最終レコードの判定...
-
MS.Access でサブフォーム付の...
-
DoCmd.SearchForRecord が動か...
-
Accessの「Form_AfterUpd...
-
アクセスで複数レコードを1レ...
-
ファイルメーカーで重複してイ...
-
禁止文字をエクセルかアクセス...
-
ファイルメーカーProでレコード...
-
二つ以上あるものだけを抽出し...
-
AccessVBA フィルタとカレント...
-
アクセスのフォームビューの帳...
-
MSAccess ロック状態かどうかを...
おすすめ情報