<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



さてさて。では実験・・・。なんか仮に出庫するとして、顧客や担当者、商品を選び、[在庫照会]ボタンをクリックしましょう。

でました???ぜんぜん違う商品の情報が出ちゃったり、何にも出てこなかったりしたら、多分フォームを開くときのWhere条件式の書き方が間違ってるんだと思います。
フィールド名やテキストボックスの名前などもう一度確認してリトライしてください。


さて・・・ここまできたら、もうちょっとてこ入れしましょう。もし、仮に、商品を何も選ばないうちに[在庫照会]ボタンをクリックしたら???
おやー。
こりゃまたのっぺらぼうな・・・。そりゃそうですよね。どの商品の在庫状況出していいかわかんなきゃこうなっちゃいますよね。

んー、どうするべか・・・。
まあ、考え方はいろいろありますけど、どうでしょう、ここは、商品を選択するまで、[在庫照会]ボタンをクリックできなくしておくってのは。
姑息ですけど。

これもまあよく使う手でして、最初からこのボタンの「使用可能」プロパティを「いいえ」にしておきます。

ここが「いいえ」だと、このボタンクリックできないんです。



んで、「商品」のコンボボックスの更新後処理イベントに、ちょっと処理を付け加えます。

Private Sub 商品_AfterUpdate()

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

DoCmd.GoToControl "注文数"
End Sub

Me![コマンド75].Enableというのが、このコマンドボタンの「使用可能」プロパティのことです。
マクロならば値の代入アクションで、

アイテム:Forms![出庫フォーム]![コマンド75]
式:True

とします。

ついでに、[新規入力]ボタンのクリック時には、逆にこのボタンを再び使用不能にするようコードを付け加えてみました。
マクロの場合は、式欄のTrueがFalseになるだけです。

Private Sub コマンド70_Click()
DoCmd.GoToRecord , , acNewRec
Me![分類] = Null
Me![メーカー] = Null
Me![フレーム24] = 1
Me![フレーム36] = 11

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

End Sub

こういう作り込みは、実際にいろんな操作をしてみないとうまくいかないことが多いので、使用可能にするタイミングや使用不能にするタイミングをよく考えて作り込んでいきましょう。
返って邪魔になっちゃうこともあるんでね・・・。まあ、ここでは、こんなこともできるよみたいな感じでとらえてください。


さてさて。では改めて、なんか注文を受けて、その時その商品の在庫やら詳細情報を確認する操作、やってみましょう。

顧客と、担当者と、商品名を選んで、ん?在庫はいくつくらいあるのかなゲッターライガーは・・・ということになったら、[在庫照会]ボタンをクリックして、緑の画面で確認し、確認が終わったら緑の画面を閉じて、注文数を入力する・・・。50個買おうかな。いかがでしょう。スムーズに動きます?

ん?ゲッターライガーって何かって?そりゃちょっと今は言えないですね。

で、入力が終わったら、いったん[出庫フォーム]を閉じましょうか。

今度はさっき作ったQ_現在庫を開いてみましょう。今しがた注文した商品、差し引かれた形で現在庫数が表示されます?

いちおう、こういうシステムの場合、気長にテストしないとイケナイと思うんで、どの段階でどの数値が変わってればオッケーか、テストのポイントを絞っておきましょう。

ま、当然のことながら、次にもう一回ゲッターライガーを注文しようとした人が在庫照会をすると、現在庫は最新の数がフォームに表示されるようになってるわけですよね。


この辺のテストが完全に終わったら、こんな工夫はいかがでしょう。

フォームのプロパティに「ポップアップ」というのがあります。
これを設定することによって、この緑のフォームは常に一番上に陣取り、閉じるまでずっと表示されていて他の操作ができなくなります。
テスト中にこんな設定先にやっちゃうとうざったくてしょうがないですけど、いちおう動作確認ができた後でしたらぜひ試してご覧になってみてください。
「こういうのは別にいらないや」ということでしたら、ポップアップはオフのまま先に進みましょう。

あとはこんなのどうでしょう。
緑色のこのフォームを閉じたあと、出庫フォームの[注文数]のテキストボックスにカーソルを移動させておく・・・っていうの。
いちいちマウスでクリックしたりしなくても、すぐ数値の入力ができますよね。

でも、ただGotoGontrolだけじゃできないんで、例えば緑のフォームを閉じるときのイベントに下のように

Private Sub Form_Close()
DoCmd.SelectObject acForm, "出庫フォーム"
DoCmd.GoToControl "注文数"
End Sub

マクロで言うところの「オブジェクトの選択」というアクションで[出庫フォーム]を選択しておいて、んでもって[注文数]に移動するって感じになります。

これもケースバイケースなんで、いろいろ実験してみて、操作に支障がないようでしたら取り入れてみてください。