【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード

検索条件を入力するフォームA、検索でヒットしたレコードを表形式で表示するフォームB、フォームBにて詳細ボタンをクリックすると、単票形式のフォームCを表示する設定にしてあります。
このうち、フォームCはデータを入力するときに使用しています。
検索でヒットさせた場合のみ、フォームCのデータを変更できないようにするにはどうしたらいいでしょうか? よろしくお願いします。
下記のVBAが、フォームBの詳細ボタンをクリックしたときに、フォームCを開くためのコードです。
このVBAのどこに入れたらいいでしょうか?
よろしくお願いします。
なお、このVBAはウィザードで作成されたものです。

Private Sub cmd詳細_Click()
On Error GoTo Err_cmd詳細_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = ChrW(102) & ChrW(114) & ChrW(109) & ChrW(-28982) & ChrW(20001) & ChrW(12487) & ChrW(12540) & ChrW(12479)

stLinkCriteria = "[ID]=" & Me![ID]
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_cmd詳細_Click:
Exit Sub

Err_cmd詳細_Click:
MsgBox Err.Description
Resume Exit_cmd詳細_Click

End Sub

A 回答 (1件)

フォームを開いた後、「追加・削除・更新の許可/不可」のプロパティをVBAで操作すれば良いかと。

具体的には、

DoCmd.OpenForm stDocName, , , stLinkCriteria

の後に、

With Forms(stDocName)
  .AllowAdditions = False '追加
  .AllowDeletions = False '削除
  .AllowEdits = False   '更新
End With

を追加すれば良いでしょう。

余談ですが、この手のご質問はアプリ名やバージョンを必ず書きましょう。また、

>stDocName = ChrW(102) & ChrW(114) & ChrW(109) & ChrW(-28982) & ...

とフォーム名を文字コードを使って変数に代入しているのは、意図的?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!