アプリ版:「スタンプのみでお礼する」機能のリリースについて

Accessで在庫管理をしようと作成中なのですが・・・入荷した時に数量を入力するフォームを作っているところで、つまづいています。
入力フォームはメーカーや分類を先にトグルボタンにて選択して、その抽出された中から商品名を選択、その際に自動的に商品IDが選択されるようにしています。

入荷フォームでの入力項目は商品ID、入荷数、入荷年月だけです。
入荷年月は自動で今月の値を代入してます。

どれも値要求を「はい」に設定してあります。
なので、たとえば、商品を選択後、商品IDが自動で入力された状態で、やはり別の商品だったということで選択しなおそうとトグルボタンなどを押そうとした際、入荷数に数字が入っていないので「Null値を入れることは出来ません」みたいなメッセージが出て操作不能になってしまいます。

かといって、値要求を「いいえ」に設定すると、間違った情報が保存されてしまう可能性が出てきます。

何か、対応策をご存知の方、お知恵を拝借願います。

一応、すで数時間挑戦してますが、現在進行形で試行錯誤中なので、自己解決してたらすみません(汗

A 回答 (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 メソッドを使っている単純な関数です。
    • good
    • 0
この回答へのお礼

CNNExecute 関数がどうやったら使えるようになるか分からず四苦八苦しましたが、何とか解決しましたw
回答ありがとうございました。

お礼日時:2007/08/17 02:35

>入荷数に数字が入っていないので「Null値を入れることは出来ません」みたいなメッセージが出て操作不能になってしまいます。



データのチェックが働いているので、動作としては良いことですね。
通常、そのような場合ESCキーを押して、編集状態を
キャンセルする、オペレーションで済むと思うのですが・・
入力し直す場合には、一旦ESCキーで処理キャンセルの操作方法では
問題ありでしょうか・・問題ないと思いますが。
    • good
    • 0

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