Microsoft Access 掲示板

ACCESSのフォームについて

4 コメント
views
4 フォロー

ACCESSのフォームについての質問です。

ACCESS20106を使っています。

F_表紙
F_詳細データ

データソースは、Q_顧客データ
主キーは、顧客ID

やりたいことは、F_詳細データの中に、
レコードロックというフィールドがあります。(True/False型)

F_表紙には、F_詳細データを開くボタンを設置しています。

やりたいこと

F_表紙のボタンをクリックしたときに、
レコードロックにチェックが入っていたら、F_詳細データを開かせない。

IF [Froms]![F_詳細データ]!レコードロック= True Then
MsgBox "他人が利用中です。"
Cancel = True

Else
DoCmd.OpenOpen "F_詳細データ", , , "顧客ID=" & Me.顧客ID

End if

このコードですと、
Sub または、Functionが・・・・とエラーになります。

どの部分を修正するのか、お手数ですが、ご教示しただけないでしょうか?

よろしくお願いします。

hideki
作成: 2020/09/03 (木) 14:05:45
通報 ...
1

提示されているコードにも問題がありますが、「Sub または、Functionが・・・・」というエラーがでるなら、それは別の部分のエラーである可能性が高いですね。
そのエラーがでたときに、「デバッグ」をクリックしたときに反転表示されるコードの前後も提示してください。

とりあえず提示されている部分を修正するなら、

IF DLookup("レコードロック", "Q_顧客データ", "顧客ID=" & Me.顧客ID)= True Then
    MsgBox "他人が利用中です。"
Else
    DoCmd.OpenOpen "F_詳細データ", , , "顧客ID=" & Me.顧客ID
End If
2
hideki 2020/09/03 (木) 17:27:26 09c37@96514

回答ありがとうございます。
Sub または、Functionが・・・・ で、反転するコード自体が無かったので、
hatena様の仰るとおり、コード自体に問題があると思っていました。

操作しているフォームから、他のフォームを操作するには、Forms!かと思いましたが、
提示されたコードでできるんですね。
勉強になりました。
ありがとうございました。

3

操作しているフォームから、他のフォームを操作するには、Forms!かと思いましたが、

その認識で合ってますが、Forms!で参照する場合はフォームは開いている必要があります。
今回は、開く前に確認したいので、フォームのレコードソースのクエリの該当レコードのフィールド値を参照するために、
DLookup関数を使ったということです。

4
hideki 2020/09/11 (金) 10:29:47 09c37@96514

hatena様
返信おくれて申し訳ありません。
解説までしていただき、本当にありがとうございました。