• ベストアンサー

access2002 追加クエリ?マクロ??

accessは数年前に2000を少し触ったことのある程度です。 SQLやVBAの記述などは出来ません。 今、小規模の在庫管理・販売管理のデータベースを作っています。 例えば小物を販売するために小物の基本情報をまず登録するために、 [基本情報登録][販売種類登録][値段の情報] のテーブルを3つと 「基本登録フォーム」「基本登録サブフォーム」 のフォームを2つ作りました。 [基本情報登録] 基本NO  商品名    形状    重さ 1  くまのぬいぐるみ  毛糸    500g 2  ねこのぬいぐるみ  フェルト  400g [販売種類登録] 種類NO 種類  h01 店  h02 店(お得意様)  h03 店(値引き)  h04 不良品 [値段の情報] 値段NO 基本NO 種類NO 金額 01   1   h01   200円 02   1   h02   150円 03   1   h04    0円  04   1   h01   150円 05   2   h03   120円 06   2   h04    0円 フォーム[基本情報登録] サブフォーム[販売種類登録][値段の情報] 入力するときは、フォーム・サブフォームで表示させて商品の新規登録時に値段も登録するようにしています。 ただ、不良品であれば値段は絶対に0円です。(販売フォームを作ったときに、値段の参照をするので入れておきたい) 登録する度に入力するのは何か違うな、と思います。 なので「追加クエリ」でフォームに新しい商品が登録されたときに自動で[値段の情報]テーブルに「1 h04 0円」と入ればいいのでは、と思ったのですが…。 クリエ起動→追加クエリに変更 抽出…条件……? 追加クエリというものは、 「入力済のものを抽出してその抽出したものを別テーブルに追加する」 という機能で、私のやりたい事はマクロになるのでしょうか…? マクロを新規作成してみると「値の代入」というものがあり、これか?と思いましたがそこで躓きました…。 教えて頂けると助かります。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.3

新しいデータをテーブルに追加したいときは追加クエリ 今あるデータを変更したいときは更新クエリ レコードを追加したときに自動で他のデータを追加するためには、少々のVBA(かマクロ)を使用する必要がある。 バッチ処理みたいな感覚で、クエリ実行するとh04が登録されていない商品に関して全件0円登録をすることも可能だが、クエリがほんの少し複雑。 お勧めとしては、商品マスターや出庫テーブルの構造を見直すこと。 私が作るなら、 割引率が違う店舗の数が2,3種類に限られ、商品数も限定されるなら商品マスターに割引後価格を持たせる。 店舗により割引金額が異なるなら、顧客マスター側に割引率を持たせて、出庫テーブルに理由などのデータを持たせて、不良品を識別する。

yukana98
質問者

補足

回答をありがとうございます。 な、なるほど…! 構造を見直してみます。 また、やはりVBAは覚えると便利のようですね…っ。 はじめてのVBAの本も買ってみましたので勉強してみます。 どうもありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

このような場合は更新クエリで対応します。 と書きましたが、VBAやほかの方法もありますが、 わかりやすいのではということで提案しました。 この更新クエリをクリックして実行すれば、 一括してデータを更新できます。また0h4の金額 変更もクエリのレコードの変更の部分を変更す れば金額を自由に設定できます。ということで この方法はいかがでしょうか。

yukana98
質問者

お礼

一括更新が出来ました。 こういった方法もあるんだなと勉強になりました。 ありがとうございました!

すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

このような場合は更新クエリで対応します。 yukana98さんの示されたテーブル名、 フィールド名で以下にクエリのSQL文を 提示しておきます。 UPDATE 値段の情報 SET 値段の情報.金額 = 0 WHERE (((値段の情報.種類NO)="h04")); あるいは、金額はたとえば120円のように 円をつけてテーブルに保存しているならば、 UPDATE 値段の情報 SET 値段の情報.金額 = "0円" WHERE (((値段の情報.種類NO)="h04")); としてください。 これを新規のクエリのSQLビューに貼り付け、 Q不良品金額設定とでも名前をつけて保存して ください。 このクエリは値段の情報の種類NOがh04ならば そのレコードの金額を0にするという意味です。 クエリをデザインビューで見ると少しわかり やすいかもしれません。 では。

すると、全ての回答が全文表示されます。

関連するQ&A