• ベストアンサー

フォーム上の入力チェックをしたいのですが・・・

MS-ACCESS(Ver2003)で売上進捗システムを作っています。 (通番検索→検索結果及び投入フォームの表示) 例えば、以下のように投入フォーム上で、必須のデータが入力されてないと、警告メッセージが出るようにしたいのです。 営業対応日(投入済)、担当者名(未投入)、対応状況(未投入) →”担当者名及び対応状況を入力してください”(警告メッセージ) ACCESSに詳しい方、御教授宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ruru0707
  • ベストアンサー率68% (20/29)
回答No.4

またまたごめんなさい。 最後の行を変更した事により対応状況に入力漏れがあった場合の判定が必要です。 全行再掲しますね。 ------------------------------------------------------ Dim strメッセージ As String Dim byt判定 As Byte '初期値設定 strメッセージ = "" byt判定 = 0 If IsNull(Me![txt営業対応日]) = True Then strメッセージ = "営業対応日" byt判定 = 1 End If If IsNull(Me![txt担当者名]) = True Then strメッセージ = strメッセージ & IIf(byt判定 = 1, "及び担当者名", "担当者名") byt判定 = 1 End If If IsNull(Me![txt対応状況]) = True Then strメッセージ = strメッセージ & IIf(byt判定 = 1, "及び対応状況", "対応状況") byt判定 = 1   '←修正箇所 End If If byt判定 = 1 Then MsgBox (strメッセージ & "を入力してください。") Else MsgBox ("OK!") 'OKだった時メッセージを出す場合のみ End If

miffy123
質問者

お礼

ruru0707さん。 miffy123です。先日の件ではお世話になり、有難うございました。 実は要求事項が1件増えまして、フォーム上で新しく”失注理由”(コンボボックスにより選択)という項目が増えまして、以下のような処理をする場合どのようにプロシージャを記述して良いものか困っています。 対応状況(失注)、失注理由(未投入) →”失注理由を入力してください”(警告メッセージ) 先日、教えていただいたプロシージャに該当の記述の仕方が分からないのですが、教えていただけないでしょうか?

その他の回答 (3)

  • ruru0707
  • ベストアンサー率68% (20/29)
回答No.3

すみません。入力漏れがなかった時の記述が漏れてました。 最後の1行を下記のように変更して下さい。 if byt判定=1 then   MsgBox (strメッセージ & "を入力してください。") else   MsgBox ("OK!") 'OKだった時メッセージを出す場合のみ end if

miffy123
質問者

お礼

ruru07さん。 お返事送れて申し訳ありません。 最後の1行を変更したら、うまく表示できました。 本当に助かりました。感謝感謝です!

  • ruru0707
  • ベストアンサー率68% (20/29)
回答No.2

フォーム上のテキストボックスの名称をその他タブで定義しておきます。 仮に [営業対応日]=txt営業対応日 [担当者名]=txt担当者名 [対応状況]=txt対応状況 とします。 ------------------------------------------------------------- If IsNull(Me![txt営業対応日]) = True Then MsgBox ("営業対応日を入力して下さい。") Me![txt営業対応日].SetFocus       '入力すべき場所へカーソルを移動 End If If IsNull(Me![txt担当者名]) = True Then MsgBox ("担当者名を入力して下さい。 ") Me![txt担当者名].SetFocus '入力すべき場所へカーソルを移動 End If If IsNull(Me![txt対応状況]) = True Then MsgBox ("対応状況を入力して下さい。") Me![txt対応状況].SetFocus '入力すべき場所へカーソルを移動 End If ------------------------------------------------------------ でも良いと思うのですが、上記の場合メッセージは未入力の数だけ表示されます。 お尋ねのように1回でまとめるなら、変数が必要ですのでもう少し複雑になりますが、 ----------------------------------------------------------- Dim strメッセージ As String Dim byt判定 As Byte '初期値設定 strメッセージ = "" byt判定 = 0 If IsNull(Me![txt営業対応日]) = True Then strメッセージ = "営業対応日" byt判定 = 1 End If If IsNull(Me![txt担当者名]) = True Then strメッセージ = strメッセージ & IIf(byt判定 = 1, "及び担当者名", "担当者名") byt判定 = 1 End If If IsNull(Me![txt対応状況]) = True Then strメッセージ = strメッセージ & IIf(byt判定 = 1, "及び対応状況", "対応状況") End If MsgBox (strメッセージ & "を入力してください。") ----------------------------------------------------------- で出来ると思います。

miffy123
質問者

お礼

ruru0707さん。 miffy123です。 早速、御教授いただいて有難うございます。 フォーム上に判定ボタンを作って、プロシージャ(下の複雑なほう)を書いてみたら、営業対応日が入力されていて、その他の担当者名と対応状況が未入力のレコードはボタンを押してチェックをかけたら、”担当者名及び対応状況を入力してください”とメッセージが出ました。 担当者名と対応状況を入力後、再度判定ボタンを押すと、”を入力してください"というメッセージが残ってしまうのですが、どうしてでしょう?最後の1行を消したら、ボタンを押しても何もメッセージが表示されませんし・・・ 回避するにはどうしたらいいでしょうか?

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

一番確実かつ簡単な方法はテーブルのデザインビューでそのフィールドの [値要求]を[はい]にすることです ただしこの場合表示されるメッセージは規定のものになります 自前の仕様、自前のメッセージを表示させたいときには そのようなチェックをするコードを書くことになりますね

関連するQ&A