• ベストアンサー

値要求が”はい”の場合のエラー処理

テーブルのプロパティで値要求を”はい”にした場合に、当然入力をしていて未入力の場合にエラーになりますが、誤ってフィールドの1つにでも入力をしてしまって、Deleteで消去してもレコードが1件発生している為に 「フィールドに必要な値がTrueに設定されているため、このフィールド'テーブル.フィールド名'にNull値は挿入できません」 というエラーになりますが、このエラーの場合には適当なデータを入力して1件発生させてからあとで削除をするしか切り抜ける事は出来ないのでしょうか? ACCESS2000を使用しています。 よろしくお願いします。

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

  • ベストアンサー
  • yoisho
  • ベストアンサー率64% (331/516)
回答No.4

フォームを閉じる際に顧客名が未入力の場合に、新たなレコードを保存させないようにするには、閉じるボタンのクリック時イベントに、cmd更新_Click() イベントと同じコードを記述するのが良いかと思います。 もし、フォームの閉じる(左上の×)ボタンにも対応させたければ、フォームの更新前イベントでデータの更新をキャンセルする方法があります。 具体的なコードは、例えば Private Sub Form_BeforeUpdate(Cancel As Integer) If IsNull(Me!cbo顧客名) Then Me.Undo MsgBox "顧客名が未入力のため、データは更新されませんでした。" End If End Sub 以下アドバイスですが、データの保存(更新)を Requery でなさっていますが、これですとこの後、一番初めのレコードが表示されていると思います。 もちろんこれでも、データの保存には全く問題はありませんが、もしカレントレコードを最後に入力したレコードのままにしたければ、 Me.Requery の代わりに DoCmd.RunCommand acCmdSaveRecord と記述すればOKですので、ご参考まで。 申し訳ありませんが、コードの動作確認を行っていませんので、自信なしのアドバイスです。 (コードの不備やその他疑問等ありましたら、補足でご連絡お願いします。)

t-tomo
質問者

お礼

無事出来ました。 おまけにDocmd.RunCommand acCmdSaveRecordという便利なメソッドも教えていただいてありがとうございました。 これからもいろいろと使えるような気がするのでもっと調べたいと思います。 これからもよろしくお願いします。

その他の回答 (3)

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.3

たぶん、テーブルではエラーメッセージのカスタマイズはできないように思います。 ユーザーにデータ入力をさせるのでしたら、テーブルを元にフォームを作って、こちらから入力するようにした方が良いのでは? フォーム上でしたら、(例えばテキストボックスの)細かい入力規則やエラーメッセージの設定もできますし、VBAを使えばその他のエラー処理も自由度が高く可能です。

t-tomo
質問者

補足

フォームは作成してあります。 そして Private Sub cmd更新_Click() If IsNull(Me!cbo顧客名.Value) Then MsgBox "顧客名を入力してください。” Exit Sub End If Me.Requery End Sub と書きましたが、これでエラー表示は出来るのですが、他にも閉じるボタンというのがあって、これをクリックすると、そのままフォームが閉じて顧客名が入力してなくても1件作成されてしまいます。 これはどうしたらいいのでしょうか?

  • paz777
  • ベストアンサー率47% (77/163)
回答No.2

こんにちは。 エラーメッセージが出た後に[Esc]キーを 押して下さい。 #1 yoishoの回答の「コントロール」+「Z」と 同じ操作です。 ではでは・・・

t-tomo
質問者

補足

回答ありがとうございました。 エラーのキャンセルは出来たのですが、エラーの表示をユーザーにも分かりやすいように独自のメッセージを表示したいと思っていますが、それはどのようにしたらいいでしょうか? よろしくお願いします。

  • yoisho
  • ベストアンサー率64% (331/516)
回答No.1

コマンドボタンの(または、編集メニューの)「元に戻す - カレントフィールド/レコード」、あるいは「コントロール」+「Z」キー で、キャンセルできますが。 もし、ご質問の意味を取り違えていたら、すみません。

t-tomo
質問者

補足

回答ありがとうございました。 エラーのキャンセルは出来たのですが、エラーの表示をユーザーにも分かりやすいように独自のメッセージを表示したいと思っていますが、それはどのようにしたらいいでしょうか? よろしくお願いします。

関連するQ&A