dポイントプレゼントキャンペーン実施中!

MS-ACCESS(Ver2003)で売上進捗システムを作っています。
(通番検索→検索結果及び投入フォームの表示)
例えば、以下のように投入フォーム上で、必須のデータが入力されてないと、警告メッセージが出るようにしたいのです。

営業対応日(投入済)、担当者名(未投入)、対応状況(未投入)
→”担当者名及び対応状況を入力してください”(警告メッセージ)

ACCESSに詳しい方、御教授宜しくお願いいたします。

A 回答 (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
    • good
    • 0
この回答へのお礼

ruru0707さん。
miffy123です。先日の件ではお世話になり、有難うございました。

実は要求事項が1件増えまして、フォーム上で新しく”失注理由”(コンボボックスにより選択)という項目が増えまして、以下のような処理をする場合どのようにプロシージャを記述して良いものか困っています。

対応状況(失注)、失注理由(未投入)
→”失注理由を入力してください”(警告メッセージ)

先日、教えていただいたプロシージャに該当の記述の仕方が分からないのですが、教えていただけないでしょうか?

お礼日時:2007/12/05 21:48

すみません。

入力漏れがなかった時の記述が漏れてました。
最後の1行を下記のように変更して下さい。

if byt判定=1 then
  MsgBox (strメッセージ & "を入力してください。")
else
  MsgBox ("OK!") 'OKだった時メッセージを出す場合のみ
end if
    • good
    • 0
この回答へのお礼

ruru07さん。
お返事送れて申し訳ありません。

最後の1行を変更したら、うまく表示できました。
本当に助かりました。感謝感謝です!

お礼日時:2007/11/30 19:57

フォーム上のテキストボックスの名称をその他タブで定義しておきます。


仮に
[営業対応日]=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メッセージ & "を入力してください。")
-----------------------------------------------------------
で出来ると思います。
    • good
    • 0
この回答へのお礼

ruru0707さん。
miffy123です。
早速、御教授いただいて有難うございます。

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

回避するにはどうしたらいいでしょうか?

お礼日時:2007/11/29 23:15

一番確実かつ簡単な方法はテーブルのデザインビューでそのフィールドの


[値要求]を[はい]にすることです
ただしこの場合表示されるメッセージは規定のものになります

自前の仕様、自前のメッセージを表示させたいときには
そのようなチェックをするコードを書くことになりますね
    • good
    • 0

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

関連するカテゴリからQ&Aを探す