- ベストアンサー
Accessの在庫管理における入荷フォームでの入力エラーの対応策は?
- Accessで在庫管理をする際に、入荷フォームでの入力エラーについて困っています。入荷数が未入力の状態で別の商品を選択しようとすると、操作不能になってしまいます。
- 値要求を「はい」に設定しているため、入荷数の未入力がエラーの原因となっています。しかし、値要求を「いいえ」に設定すると、誤った情報が保存されてしまう可能性があります。
- この入力エラーに対して、どのような対応策があるのか、ご存知の方がいらっしゃいましたら、お知恵を拝借したいです。現在は試行錯誤中であり、自己解決できない状況です。お力をお貸しください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
先ず、全体のユーザオペレーションのあり方を決められる必要があろうかと思います。 入庫伝票の入力途中で、以前のレコードに戻ることを許すのか否? これを禁止し、行入力の完了を移動条件とした場合、ユーザの使い勝手は著しく悪化します。 入力途中の行を初期化させたり削除することを要件にするのもユーザは歓迎しないでしょう。 自由に移動出来ることが一番ではないでしょうか? もちろん、これは出庫伝票その他にも共通する仕様の基本に関わる重要な問題です。 さて、[商品ID]決定時に入荷数を0にしておけば、この不具合は解消されるでしょう。 しかし、これも Null値を許容するのと50歩100歩です。 なぜなら、[商品ID]を再選択することなく伝票入力画面を閉じられることもあるからです。 ところで、自由に移動を許可すればゴミレコードが多発するとの心配もあるでしょう。 しかし、そういう事情で発生したゴミレコードは僅か1行のコードを書くことで伝票入力終了時に掃除することも可。 Private Sub Form_Close() CNNExecute "DELETE FROM 入出庫伝票 WHERE Nz(入荷数)=0" End Sub もちろん、{ESC}{ESC} を送ったりレコードを初期化するコードを書いても構いません。 DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 が、これですと、[商品ID]を再選択しようと思ったが、実は勘違いだというケースへの対応の問題が残ります。 で、結局は、<自由に移動を許可するが一番>ということになると思います。 なお、CNNExecute 関数はADODB の Execute メソッドを使っている単純な関数です。
その他の回答 (1)
- kurodai2
- ベストアンサー率38% (77/202)
>入荷数に数字が入っていないので「Null値を入れることは出来ません」みたいなメッセージが出て操作不能になってしまいます。 データのチェックが働いているので、動作としては良いことですね。 通常、そのような場合ESCキーを押して、編集状態を キャンセルする、オペレーションで済むと思うのですが・・ 入力し直す場合には、一旦ESCキーで処理キャンセルの操作方法では 問題ありでしょうか・・問題ないと思いますが。
お礼
CNNExecute 関数がどうやったら使えるようになるか分からず四苦八苦しましたが、何とか解決しましたw 回答ありがとうございました。