Access VBA質問箱 IV

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

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


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

【4241】「NULL値は挿入できません。」エラーを非表示 みほ 05/1/22(土) 17:44 質問[未読]
【4245】Re:「NULL値は挿入できません。」エラーを非... かろちん 05/1/23(日) 17:07 回答[未読]
【4247】Re:「NULL値は挿入できません。」エラーを非... みほ 05/1/24(月) 9:59 お礼[未読]

【4241】「NULL値は挿入できません。」エラーを非...
質問  みほ  - 05/1/22(土) 17:44 -

引用なし
パスワード
   いつもお世話になっています!
WindowsXP、Access2000使用です。

フォーム入力中に、値要求を設定している項目について、
テキストボックスを空にしてタブを移動すると、
「フィールドに必要なプロパティが・・・NULL値は挿入できません。
値を入力してください。」というアクセスのエラーが表示されます。
こういったNULLチェックは画面終了時にまとめて行いたいので
このアクセスのエラーを非表示にしたいのですが
よい方法はないでしょうか。

現在、各テキストボックスのBeforeUpdateイベントに、下記のコードを書いて
回避しているのですが、全ての必須項目についていちいちコードを
書かなくてはならず、メンテナンスも大変です。
一発解決ですとか、せめて各テキストボックスのBeforeUpdateイベント
に書かなくても済む方法はないでしょうか。
<コード>
  If IsNull(Me!各項目) Then
    Cancel = True
    Me!各項目.Undo
  End If

皆様のお知恵をお待ちしております。お願いします。

【4245】Re:「NULL値は挿入できません。」エラーを...
回答  かろちん  - 05/1/23(日) 17:07 -

引用なし
パスワード
   みほ さん こんにちは

方法は無いわけではありませんが、あまり良い方法とはいえません。
記述されているソースを見る限り、未入力の場合に元の値に戻す処理
だと思います。
最終的に画面を終了する際にと仰っていますが、どの程度のデータを
登録や更新されるのか分かりませんが、ご存知のとおりDBは1レコード
単位の処理となると思います。
したがって、画面終了タイミングは、1レコード分の入力を終えた後
ということになります。
これで、通常運用が可能かどうかは不明ですが、1レコード単位で
あれば、面倒ですが、コントロールは非連結にし、フォーム起動時
もしくは、検索処理時にデータをテーブルより抽出し各コントロール
にセットされる方が良いかと思います。
上記は、あくまで私がそう思うことですので、仕様的にはどの方法が
良いのかは、ご自分で判断してください。

以下に、現状UPされている処理を纏めて行う方法を記載します。

フォームの「エラー時」イベントで以下のコードを記述します。

Private Sub Form_Error(DataErr As Integer, Response As Integer)

  If DataErr = 3314 Then
    Response = acDataErrContinue
    Me.ActiveControl.Undo
    Exit Sub
  End If

End Sub

DataErr引数は、未入力のエラーコードです。
Response = acDataErrContinueはメッセージを出力しないコードです。

【4247】Re:「NULL値は挿入できません。」エラーを...
お礼  みほ  - 05/1/24(月) 9:59 -

引用なし
パスワード
   かろちんさん、処理方法のご提案と
現在の回避策の改良方法の指示、
本当にありがとうございます。

時間があまりとれないので、とにかく助かりました。
これで、無意味にたくさん書いてしまったコードを
ひとまとめにすることができます!

本当にご親切に・・(涙)です。

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