プロが教えるわが家の防犯対策術!

お世話になります。
Access2003のクエリで使う関数について教えてください。

会社で管理している在庫表に いくつか条件が必要になりました。
在庫=0 の場合は表示させない
ただし
在庫=0 でも 入庫、移動、出庫で1以上の動きがあったものは全て在庫表へ表示する
というものです。
今までは 在庫<>0 で全て在庫0のアイテムは非表示できたのですが、1つでも数字の動きがあった商品は在庫が0だった場合でも表示をさせて在庫表を作成するというのですが、ここ3日ほど本を読んで調べているのですがどうしても作れません。

以下が希望している条件です。
例)
入庫0/移動0/出庫0/在庫0 →非表示
入庫100/移動0/出庫100/在庫0 →表示
入庫0/移動10/出庫0/在庫0 →表示
入庫0/移動0/出庫10/在庫0 →表示
お忙しいところ恐縮ですが、どうかどなたかお教えて下さると助かります。よろしくお願いいたします。

A 回答 (2件)

非表示とは、抽出しない、となりますか?



WHERE ([入庫]>0) OR ([移動]>0) OR ([出庫]>0) OR ([在庫]>0)

※ マイナス値があるのなら、> を <> に置き換えるとか考えてください。
    • good
    • 0
この回答へのお礼

30246kikuさん
早速 回答をありがとうございます。
非表示とは 抽出しないで理解していただいて正解です。

教えて頂いたこの関数をクエリの抽出条件とフィールドにいれて試したのですが どうしても未定義関数と出てしまって動作しません。
そこで SQLに貼り付けたら 入庫,移動,出庫,在庫に数字を入れろというメッセージがでて 試しに全てに1を入力すると在庫0も含む在庫表が抽出してしまいました。
知識不足で申し訳ありません 具体的にどこにおけば動作するのかできましたら 具体的に教えていただけると助かります。

お礼日時:2009/03/04 09:43

> WHERE ([入庫]>0) OR ([移動]>0) OR ([出庫]>0) OR ([在庫]>0)


これは関数ではありません。

WHEREの条件に書くものとして、WHEREを書いてました。

では、クエリのデザイン画面でのこととして書いてみます。

「在庫」というフィールド(列?)が既にあり、
   抽出条件に <>0 が書かれていると思います。

「入庫」のフィールドがあったら、
  「在庫」の <>0 が書かれている下の行(違う行)に >0 を書きます。

「移動」「出庫」に対しても同様に
   前に書いた >0 と違う行に >0 を書きます。

 見た目、 >0 が階段状になります

デザイン画面での説明はしにくいので、SQLビューに切り替えると、

以前のクエリでは
SELECT ・・・
FROM テーブル名
WHERE ((テーブル名.在庫)<>0)
・・・;

のような感じになっていたと思います。
で、そのWHERE 部分に書くという意味で書いたものでした。

テーブル名が1つであれば、テーブル名の記述は省略できるので
WHERE ([入庫]>0) OR ([移動]>0) OR ([出庫]>0) OR ([在庫]>0)

省略しない時には、
WHERE ([テーブル名].[入庫]>0) OR ([テーブル名].[移動]>0) OR ([テーブル名].[出庫]>0) OR ([テーブル名].[在庫]>0)


※ 入庫、移動、出庫、在庫 というフィールド名であることが前提です。
※ 違う場合には、変更してください。
    • good
    • 0
この回答へのお礼

30246kikuさん

できました!できました!!!
教えていただいたとおりにしたら 希望通りの在庫表が抽出できて もぉ大感激です!こんなに短期間で解決できるなんて 思ってもいませんでした。
SQLもろくに知らない私のようなレベルに 時間を割いて回答を寄せて頂き、しかもとても親切丁寧にわかりやすく教えて下さって本当に心から感謝します。

ありがとうございました。

お礼日時:2009/03/04 16:15

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