Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
マクロのIfの条件式について。
投稿日時: 23/09/01 12:13:02
投稿者: 初老の男

いつもお世話になっております。
入門者です。
 
マクロデザインのところで条件分岐をしようとしています。
ifの後ろのボックスに、[入力差異]![差異]=False「クエリ名とフィールド名と値」と
入力してメッセージボックスで「間違いです」としたところ
式に指定した名前’入力差異の差異’が見つかりません。と表示されます。
マクロのIfでクエリの結果を条件にすることはできないのでしょうか。
できるのであればやり方をお教え願えないでしょうか。
 
分かりづらい質問で申し訳ございません。
よろしお願い申し上げます。
 

回答
投稿日時: 23/09/01 13:54:26
投稿者: sk

引用:
マクロデザインのところで条件分岐をしようとしています。

どのオブジェクトのどのイベントで実行しようとしている
マクロについての話なのかを明記されることをお奨めします。
 
・単一のマクロオブジェクト
 
・フォームのいずれかのイベントで実行される埋め込みマクロ
 
・レポートのいずれかのイベントで実行される埋め込みマクロ
 
・フォーム/レポート上に配置されているコントロールの
 いずれかのイベントで実行される埋め込みマクロ
 
・あるテーブルのいずれかのイベントで実行されるデータマクロ
 
引用:
ifの後ろのボックスに、[入力差異]![差異]=False「クエリ名とフィールド名と値」と
入力してメッセージボックスで「間違いです」としたところ
式に指定した名前’入力差異の差異’が見つかりません。と表示されます。

[入力差異]という名前の選択クエリに[差異]という名前の
Yes/No 型のフィールドが存在するとして、そのクエリを
実行すると何件のレコードを返されるのでしょうか。
 
仮に 2 件以上のレコードが返されるとして、
そのうちのどのレコードの[差異]の値を参照なさりたいのでしょうか。

投稿日時: 23/09/01 14:08:49
投稿者: 初老の男

ご回答ありがとうございます。
言葉が足りなくてすみません。
単一のマクロです。
入力差異というクエリに差異というフィールドがあり、表示されるのは TrueかFalseの
どちらかです。
TrueかFalseの条件でマクロを分岐したいと思っています。
 
説明がわかりづらくて申し訳ございません。
よろしくお願いいたします。

回答
投稿日時: 23/09/01 14:22:51
投稿者: sk

初老の男 さんの引用:
入力差異というクエリに差異というフィールドがあり、表示されるのは TrueかFalseの
どちらかです。

sk さんの引用:
そのクエリを実行すると何件のレコードを返されるのでしょうか。

sk さんの引用:
仮に 2 件以上のレコードが返されるとして、
そのうちのどのレコードの[差異]の値を参照なさりたいのでしょうか。

例えば[入力差異]が返すレコードの件数が 2 件だったとして、
一方のレコードの[差異]の値が True、
もう一方のレコードの[差異]の値が False だった場合は
どうしたいのか、という話です。

投稿日時: 23/09/01 14:48:00
投稿者: 初老の男

ご回答ありがとうございます。
言葉が足りなくてすみません。
[差異]の値は TrueかFalseのどちらか一つです。
False だった場合は処理を中止して、Trueだったら処理を続行したいです。
よろしくお願いいたします。

回答
投稿日時: 23/09/01 15:03:14
投稿者: sk

引用:
[差異]の値は TrueかFalseのどちらか一つです。

・選択クエリ[入力差異]は常に 1 件のレコードのみを返す
 ( 0 件になることも、2 件以上になることもない)
 
・選択クエリ[入力差異]は 2 件以上のレコードを返すこともあるが、
 全てのレコードの[差異]の値は常に同一である
 
どちらの意味でおっしゃっているのかが不明瞭ですが、
とりあえず次のような条件式を設定なさればよろしいのではないかと。
 
-----------------------------------------------------------------
 
Nz(DLookup("差異","入力差異"),False)
 
-----------------------------------------------------------------

投稿日時: 23/09/01 15:12:49
投稿者: 初老の男

ご回答ありがとうございます。
言葉足らずですみません。
 
・選択クエリ[入力差異]は常に 1 件のレコードのみを返す。
 ( 0 件になることも、2 件以上になることもない)
です。
よろしくお願いいたします。

回答
投稿日時: 23/09/01 15:58:03
投稿者: sk

引用:
・選択クエリ[入力差異]は常に 1 件のレコードのみを返す。
 ( 0 件になることも、2 件以上になることもない)
です。

引用:
False だった場合は処理を中止して、Trueだったら処理を続行したいです。

----------------------------------------------------------------------------
 
If Nz(DLookup("差異","入力差異"),False) = False Then
    マクロの中止
If 文の最後
 
----------------------------------------------------------------------------
 
基本的には、以上のように組み立てればよろしいでしょう。

投稿日時: 23/09/01 16:22:11
投稿者: 初老の男

sk様
できました!
ご丁寧な対応ありがとうございました。
本当に助かりました。
今後ともよろしくお願い申し上げます。