Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1957 / 2272 ツリー ←次へ | 前へ→

【4430】必須項目に対する入力チェックの仕組み 牛乳 05/2/18(金) 13:36 質問[未読]
【4431】Re:必須項目に対する入力チェックの仕組み クロ 05/2/18(金) 14:40 回答[未読]
【4455】Re:必須項目に対する入力チェックの仕組み 牛乳 05/2/23(水) 16:43 質問[未読]
【4458】Re:必須項目に対する入力チェックの仕組み クロ 05/2/23(水) 17:33 回答[未読]
【4465】Re:必須項目に対する入力チェックの仕組み 牛乳 05/2/24(木) 13:53 質問[未読]
【4466】Re:必須項目に対する入力チェックの仕組み クロ 05/2/24(木) 13:58 回答[未読]
【4468】Re:必須項目に対する入力チェックの仕組み 牛乳 05/2/24(木) 14:53 質問[未読]
【4469】Re:必須項目に対する入力チェックの仕組み クロ 05/2/24(木) 15:01 回答[未読]

【4430】必須項目に対する入力チェックの仕組み
質問  牛乳  - 05/2/18(金) 13:36 -

引用なし
パスワード
   必須項目に対する入力チェックの仕組みがうまく書けません。
どなたかにご教授いただきたく、よろしくお願いします。
仕様は以下の通りです。

フォームからデータを入力後に登録ボタンを押す。
入力必須項目に対して入力チェックをする。(必須項目は複数あり)
Nullの場合には、エラーメッセージを表示して該当フィールドにフォーカスを戻し、再入力させる。
全て入力できている場合にはデータ登録処理をする。

(処理の流れ)

 登録モジュール
  |
   −−−入力チェックモジュール   
        処理A:必須項目(項目1・項目2・項目3・項目4・項目5)が不完全なものは完全になるまで入力する 
             ・項目1〜5を全てまとめてチェックし、不備のある項目のみをメッセージ表示。
             ・表示された項目にカーソルを移動する。
             ・登録ボタンで入力チェックモジュールを再度行う。

        処理B:必須項目に全て入力済なら登録モジュールへ戻り、処理を継続する。
                           |
  |−−−−−−−−−−−−−−−−−
  |
 登録モジュールの続き

【4431】Re:必須項目に対する入力チェックの仕組み
回答  クロ  - 05/2/18(金) 14:40 -

引用なし
パスワード
   If IsNull(Me.項目1) Then
 MsgBox "項目1が未入力です。"
 Me.項目1.SetFocus
ElseIf IsNull(Me.項目2) Then
 MsgBox "項目2が未入力です。"
 Me.項目2.SetFocus
ElseIf IsNull(Me.項目3) Then
 MsgBox "項目3が未入力です。"
 Me.項目3.SetFocus
ElseIf IsNull(Me.項目4) Then
 MsgBox "項目4が未入力です。"
 Me.項目4.SetFocus
ElseIf IsNull(Me.項目5) Then
 MsgBox "項目5が未入力です。"
 Me.項目5.SetFocus
Else
 登録の処理
End If
こんな感じでしょうか?

【4455】Re:必須項目に対する入力チェックの仕組み
質問  牛乳  - 05/2/23(水) 16:43 -

引用なし
パスワード
   返事が遅くなり申し訳ありませんでした。
説明に言葉が足りませんでした。

登録ボタンを押すと1〜5の項目をチェックして、未入力分をまとめてメッセージを
出るようにしたいです。
例えば、項目1と4と5が未入力であれば、
「項目1・項目4・項目5が未入力です」というメッセージを表示。
OKボタンを押すと、未入力の項目の先頭へカーソルを移動する

下記の様な文にしているのですが、項目1〜5全てを入力しないで登録ボタンを
クリックすると、メッセージは「項目1,,,,,を入力してください」
と表示されています。

Function Entrychk() As Integer

Dim CHECK1 As String
Dim CHECK2 As String
Dim CHECK3 As String
Dim CHECK4 As String
Dim CHECK5 As String
Dim msg As String


Entrychk = 0
CHECK1 = ""
CHECK2 = ""
CHECK3 = ""
CHECK4 = ""
CHECK5 = ""

If IsNull(Form_登録フォーム.項目1) = True Then
  Entrychk = 1
  CHECK1 = "項目1"
Else
If IsNull(Form_登録フォーム.項目2) = True Then
  Entrychk = 1
  CHECK2 = "項目2"
  Else
If IsNull(Form_登録フォーム.項目3) = True Then
  Entrychk = 1
  CHECK3 = "項目3"
 Else
If IsNull(Form_登録フォーム.項目4) = True Then
  Entrychk = 1
  CHECK4 = "項目4"
  Else
If IsNull(Form_登録フォーム.項目5) = True Then
  Entrychk = 1
  CHECK5 = "項目5"
  End If
End If
End If
End If
End If

 msg = CHECK1 & "," & CHECK2 & "," & CHECK3 & "," & CHECK4 & "," & CHECK5

If Entrychk = 1 Then
  MsgBox msg & "を入力してください。", vbCritical, "警告"
Else
  Entrychk = 0
End If

End Function

【4458】Re:必須項目に対する入力チェックの仕組み
回答  クロ  - 05/2/23(水) 17:33 -

引用なし
パスワード
   Dim CHECK As String
Dim i As Integer

Entrychk = 0
CHECK = ""

For i = 1 To 5
  If IsNull(Forms!登録フォーム!("項目" & i)) Then
   CHECK = CHECK & "," & "項目" & i
  End If
Next i

If Len(Nz(CHECK, "")) = 0 Then
  Exit Function
Else
  MsgBox Mid(CHECK, 2) & " が未入力です。"
  Forms!登録フォーム!(Mid(CHECK, 2, 3)).SetFocus
End If

こんな感じでしょうか?

【4465】Re:必須項目に対する入力チェックの仕組み
質問  牛乳  - 05/2/24(木) 13:53 -

引用なし
パスワード
   度々申し訳ありません。
分かりやすいかと思い「項目1」などと使ってしまいました。

項目1〜5と言うのは実際には違う名称で「営業部署」「営業担当者」「設計部署」
「設計担当者」「お客様」という5つの項目名になっており、
せっかくクロさんの書いていただいた構文が使えません。
申し訳ありませんが、項目1〜5を上記の項目名に替えた場合はどのようにすれば
宜しいでしょうか?


>For i = 1 To 5
>  If IsNull(Forms!登録フォーム!("項目" & i)) Then
>   CHECK = CHECK & "," & "項目" & i
>  End If
>Next i

【4466】Re:必須項目に対する入力チェックの仕組み
回答  クロ  - 05/2/24(木) 13:58 -

引用なし
パスワード
   >項目1〜5と言うのは実際には違う名称で「営業部署」「営業担当者」「設計部署」
>「設計担当者」「お客様」という5つの項目名になっており、

逆に各コントロール名(プロパティの名前)を項目1〜5に変えてみては?
コントロールソースはそれぞれのフィールドで問題はありません。

【4468】Re:必須項目に対する入力チェックの仕組み
質問  牛乳  - 05/2/24(木) 14:53 -

引用なし
パスワード
   クロさんのアドバイス通り項目1〜5に変えてみようと思い試したところ、
名前の方を変えたところ、プロシージャの外では無効です。といエラーが出て
しまいました。

名前:営業部署→項目1に変えるという意味ですよね?
コントロールソースの方は営業部署のままでいいんですよね?


▼クロ さん:
>>項目1〜5と言うのは実際には違う名称で「営業部署」「営業担当者」「設計部署」
>>「設計担当者」「お客様」という5つの項目名になっており、
>
>逆に各コントロール名(プロパティの名前)を項目1〜5に変えてみては?
>コントロールソースはそれぞれのフィールドで問題はありません。

【4469】Re:必須項目に対する入力チェックの仕組み
回答  クロ  - 05/2/24(木) 15:01 -

引用なし
パスワード
   >名前:営業部署→項目1に変えるという意味ですよね?
>コントロールソースの方は営業部署のままでいいんですよね?

そうです。
登録フォームをデザインビューで開いて各コントロールのプロパティの
「名前」のところです。

もし、登録フォーム内のイベントプロシージャで「営業部署」「営業担当者」
「設計部署」「設計担当者」「お客様」と言う名前を使っているところ
変更する必要があります。

1957 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078265
(SS)C-BOARD v3.8 is Free