<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 Access97データベース工作室>在庫のザの字はどう書くの〜♪
  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20



さて、これで累積テーブルに[出庫テーブル]の情報を移す段取りはつきましたので、次に動かすクエリーとして削除クエリーを作ります。
これはもうオッケーですよね。[出庫テーブル]の全レコードを削除するクエリーです。

[入庫テーブル]もレコード削除したいなら、[入庫テーブル]の分も作ります。



そして、[注文テーブル]も、ずーっと古い情報が残ったままになるんで、これも棚卸を期に新たにしようかな、と思います。
でも、棚卸の間も、入庫待ちの商品があったりしますよね・・・きっと。
棚卸するから発注しないでとか入庫を早く済ませろとか、なかなかそうはいかないことも・・・。

じゃ、棚卸の時点で、入庫が完了してないものは削除せず残そうかな、と思います。
[入庫済み]がtrueのものだけ削除するようにしましょうか。


さあ、これで道具は揃いました。あとはいつどういうタイミングで棚卸をするかってことなんですけども。。。
右下にでも、コマンドボタンを作って、これクリックしたら、

確認メッセージを非表示に

Q_期初在庫更新クエリーを開く

Q_累積テーブルに追加クエリーを開く

Q_類敵テーブルに追加_入庫を開く

Q_注文テーブル削除クエリーを開く

Q_出庫テーブル削除クエリーを開く

Q_入庫テーブル削除クエリーを開く

と、アクションクエリーを連発するマクロかコードが動くようにするわけです。

でも、うっかりと、まだ入力が完了してないときにこれやっちゃうと、大変なことになっちゃいますよね。
なんか確認した方がいいと思うんですけど・・・。

とりあえず、入力し忘れとかあると、まずいですよね。どんなチェックの仕方がいいですかねぇ。
うーん、こんな方法がお役に立つかどうかわかんないですけど。。。
[棚卸]がゼロのレコードがあるうちは、メッセージを出して警告するっていうのはどうでしょう。

それにはまず、こんな感じのクエリーを作ります。[棚卸テーブル]を基にしたクエリーです。


[商品番号][棚卸]のふたつを選びます。

[棚卸]だけでもいいんですけど、まあなんとなく。
で、[棚卸]がゼロのものだけ抽出するように条件をつけます。


このクエリー実行すると、棚卸の入力がまだなされてないレコードだけを抽出することができるはずです。
全部入力が完了している場合は一件もなし。つまり、このクエリーの中身がゼロ件の場合のみ、棚卸が可能である、という動きにしようと思うんです。

このクエリー、Q_棚卸チェックって名前にしますね。


んで、コマンドボタンの「使用可能」プロパティを「いいえ」にしておいて、通常はクリックできない状態にしておきます。

で、このフォームを開くときと、フォームの更新後のイベントに、

 Q_棚卸チェックがゼロだったらコマンドボタンを使用可能に、

 ゼロじゃなかったら使用不能に

というコードを書きます。条件のあるアクションは、マクロよりコードの方が書きやすいのでお勧めです。
あ、マクロでもできますよ。条件書けますし。

Private Sub Form_AfterUpdate()

If DCount("商品番号", "Q_棚卸チェック") = 0 Then

Me![コマンド15].Enabled = True

Else

Me![コマンド15].Enabled = False

End If


End Sub


Private Sub Form_Open(Cancel As Integer)

If DCount("商品番号", "Q_棚卸チェック") = 0 Then

Me![コマンド15].Enabled = True

Else

Me![コマンド15].Enabled = False

End If


End Sub

内容は同じなんでちょっと効率悪い書き方ですけど、なんかもうくたくたなんで、とりあえずこれでテストを・・・(汗)

これで、棚卸の入力が完了していないと思われる間は、このボタンクリックできない状態なわけです。

いちおう、棚卸欄に何かしら値が入り、ゼロのレコードがなくなった時点で、ボタンが使用可能になります。
タイミングが難しい処理ですけど、わりと使えると思いますよ。