• ベストアンサー

ACCESS テーブル間のデータリンク

こんにちは。 ほぼアクセス初心者です。 大学の頃に習った記憶といくつか購入した本を頼りに、実家の会社の仕入や在庫の管理データベースを作ろうとしています。 とりあえず商品データや仕入先データをテーブルにまとめました。 次にしたいのが年度末の棚卸の数量を入力しておくテーブルの作成です。 そこで先に作った商品データを元に棚卸入力用のテーブルを作ろうとしているのですが、テーブルのコピーくらいしかわかりません。 商品の種類が約1000種類前後あるんですが、先に作ったデータが完全なものではないこともあり、テーブルのコピーをした後にデータの入れ忘れや入れ間違いの訂正をする必要もあると思います。 そこで商品データで更新した情報を棚卸入力用のほうでも自動で更新するようにしたいのですが、何かいい方法があるのでしょうか? 過去の質問も探してみたのですが、専門用語はイマイチわかりませんでした。 ちなみに商品データと棚卸入力用のテーブルは次のようなフィールドで構成しています。 商品データ ・種別名 ・メーカー名 ・個別ナンバー(種別ごとに1~999を割り当ててます) ・商品名 ・備考 棚卸入力用 ・商品名 ・備考 ・事務所在庫数 ・車A在庫数 ・車B在庫数 どなたか宜しくお願いします。

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

  • ベストアンサー
noname#140971
noname#140971
回答No.2

ウーン。 図書館で販売管理ソフトの設計と構築に関する解説書を探す必要があると思います。 それは、さておき、目の前のテーブル設計を私流に修正してみます。 ただ、私は、プロのプログラマではなく一介のデザイナーですので参考程度にして下さい。 <商品マスター> ID・・・・・・・・・・・長整数。一意に商品を管理する主キー。 機種名_ID・・・・整数。テーブル<機種名一覧>よりリストを作成する。 仕入先_ID・・・・長整数。テーブル<仕入先マスター>とリンク。 商品名・・・・・・・Char(32) 検索スペル・・・Char(32) 備考・・・・・・・・・Char(32) <棚卸集計一時テーブル> 商品マスター_ID・・・・長整数。テーブル<商品マスター>とリンク。 事務所在庫数・・・・・・倍精度 Or 長整数 Or 整数。 車A在庫数・・・・・・・・倍精度 Or 長整数 Or 整数。 車B在庫数・・・・・・・・倍精度 Or 長整数 Or 整数。 備考・・・・・・・・・・・・・・Char(32) [種別名][メーカー名][商品名]という列を、[OOOO_ID] と他テーブルのリンク情報列に置き換えただけです。 これですと、[種別名][メーカー名][商品名]は、一つのテーブルだけで管理できます。 なお、[個別ナンバー]列は、Access の検索機能を活かすことを考えて[検索スペル]列にしています。 ところで、<商品マスター>と<棚卸集計一時テーブル>との主キー列が一致していますね。 これは、無理に両者を別々に管理する理由が強く無いことを意味しています。 棚卸の都度に<棚卸集計一時テーブル>を全レコードを削除し再集計しないと、この分離は意味ないです。 とすれば、テーブル<入出庫伝票><仕入伝票>が必要なことになりますね。 そういう発展方向を展望する限りでは、分離もありでしょう。 <商品マスター>が10万レコードで<棚卸集計一時テーブル>が1000レコードもありえますので・・・。 とりあえず、こんな回答です。

kobutoriman085
質問者

お礼

教えて頂いたことを参考にいろいろ試してみました。 なんとなく先が見えてきた気がします。 ありがとうございました。

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

データベースの大原則は「データは一箇所で管理する」です >商品データを元に棚卸入力用のテーブルを作ろうとしているのですが こんなことをしてはいけません >先に作ったデータが完全なものではないこともあり、 なら、そのテーブルを完全なものにするべきです 商品データのようなテーブルがあるのなら、棚卸入力用テーブルは 棚卸入力用 ・場所 ・個別ナンバー ・在庫数 のようにします (商品データとは個別ナンバーでリレーションシップを設定します) (商品データのほうでも個別ナンバーを主キーにしてください) 場所というところには、事務所、車A、車Bがデータとして入ります 以上に書いたことが分かるまで本で復習してくださいね 仕入や在庫はデータベースとしてはかなりレベルの高いものになります 簡単じゃないですよ

kobutoriman085
質問者

お礼

>データベースの大原則は「データは一箇所で管理する」です なるほど、根本から理解してなかったようです。 もうちょっと勉強しないといけませんね。 ありがとうございました。

関連するQ&A

  • Accessで、二つのテーブルを比べて、ダブってないデータだけ取り出すことって出来ますか?

    えーっと、Accessで入荷情報の処理ソフトを作ってます(大きくつまづくごとに質問させていただいてますがw 商品名を検索して今月の入荷数を入力・・・といった具合にデータを入力していくわけですが、毎月月末に一度だけ入力するので、同じ月に同じ商品の入荷数を二度入力するということはありません。 なので、一度入力した商品データは次に検索したときに検索にひっかからないようにしたいのですが・・・。 二つのテーブル・・・マスタテーブルと入荷情報のテーブルがあって、入荷情報テーブルに入力されている商品IDをマスタテーブルの商品IDと比べて、違うのだけ抽出、とやれば出来そうな気がするのですが・・・どうやれば良いのかさっぱり分かりません。 一応、ネットで検索かけてますが、どう検索していいやら分からず右往左往してます(汗 詳しい方、どうかご教授願いまする。

  • ACCESSで在庫管理 備考欄の組み込み方?

    ACCESSで在庫管理を始めました。 なんとか在庫管理だけはできるようになりましたが、 備考欄を設けたら、備考を入れたものは数が別でカウントされるように なってしまいました。 今の在庫管理の状態は <テーブル> ・商品ベース(商品ID、商品名が入っている) ・入出庫明細 <フォーム> ・入荷票(入出庫明細テーブルに入力される) ・出荷票(入出庫明細テーブルに入力される) <クエリ> ・在庫表 ・要発注表(在庫が1以下のものだけ表示する設定) <レポート> ・在庫表(クエリの在庫表のレポート) ・要発注表(クエリの要発注表のレポート) という感じです。 フォームに商品IDを入れると、自動で商品名が表示されるようにしており(DLOOKUP)、 その下に入庫や出庫数を入力する欄、最後に備考入力欄を設けています。 たとえば、返品によって在庫が1つ増えたときに「返品」などというふうに 備考を入れたいのですが、そうすると在庫表や要発注表で 備考情報なしの物は今までの入出庫明細の合計で1行に在庫数が ずばっと出ますが、備考を入れた物はその下に同じ商品IDで 数行に出ます。 (結局最後はそれを手で計算する) 本当は、1行におさめて、備考欄を大きめにとって、そこに備考は どんどん追加されるような感じにしたいのですが、可能でしょうか? 質問の仕方も下手ですみません。 補足要求してください。宜しくお願い致します。

  • アクセス2003 テーブルについて

    昨日も別の質問でお世話になりました。 回答いただいたやり方で作業を進めているのですが、もうひとつ伺いたいことが出来ましたので、新たに質問させて頂きます。 会社の商品データを作っているんですが、下記のようなことは出来るんでしょうか? <商品マスター> ID 商品名 商品説明 備考 <仕入記録> ID (商品マスターとリンク) 商品名  仕入数量 仕入単価 この二つのテーブルを作り、<仕入記録>のIDに入力した時点で<仕入記録>の商品名に<商品マスター>の該当する商品名が自動で入るようにしたいのですが。 これは可能でしょうか?

  • UPDATE文で・・・・

    VBでUPDATE文を書いて実行したのですが うまく更新されません。 なぜなのでしょうか?教えてください。 SQL = " UPDATE t_tanaorosi SET " sSQL = sSQL & " 実在庫数=実在庫数-(実在庫数-棚卸数)" sSQL = "WHERE" sSQL = sSQL & " 実在庫数=" & pvBase.CvtSQL(TDBGrid.Columns("実在庫数").Value) 商品名を入力すると自動的に実在庫数が入力されるようになっています。 棚卸数を入力して登録して 同じ商品名を入力すると前回入力した棚卸数の数だけ減って自動に入力されるようにしたいのです。 よろしくお願いします。

  • accessで困っています

    access2000で、簡単な在庫管理ソフトを作っています。 商品マスタ(商品No、商品名、在庫初期値) 入荷マスタ(日付、商品名、入荷数) 出荷マスタ(出荷履歴No、日付、得意先名、商品名、出荷数) をテーブルに設け、商品を出荷入力すれば、初期値ー出荷数+入荷数をクエリ上で計算し、在庫数とし表示させています。 これに、出荷入力をしてそれを納品書として印刷させます。当たり前ですが、1商品出荷につき1枚の納品書しか印刷されません。 商品マスタに、商品名2や商品名3を設け、1枚に3種類まで印刷させようとすると、在庫計算方法がよく分からなくなります。 初心者で、どの様に作っていけば良いのかわかりません。 皆様のお知恵をお貸しいただけますでしょうか。 宜しくお願い致します。

  • ACCESS 2つのテーブルの最大値を選択クエリで抽出

    1週間以上悩んでいます。よろしかったらお知恵をお貸し下さい。 3つのテーブルがあります。 1.商品データT(商品ID、商品名)20件 2.売り上げデータT(商品ID、日付、場所、備考)9000件・・1日2回更新されます。 3.商品更新T(商品ID、更新内容、日付)1000件・・・1日1回更新されます。 この中から、1の商品名、2の最新の日付とそれに対応している場所と備考、3の最新の日付とのその更新内容を取り出したいのです。 3のテーブルにデータがない商品IDもあります。その場合は2の売り上げデータの最新のみ表示し、商品更新Tの更新内容や日付は空白にしたいです。 商品IDでグループ化にすると、20件の商品IDに、9000件もの場所や更新内容が表示されてしまったりしてうまくいきません・・・ なにぶん初心者ですので、クエリで作りたいです。 どなかたお分かりになる方、助けて下さい!!!

  • MicroSoft Access2000で複数のテーブルの中にある必要

    MicroSoft Access2000で複数のテーブルの中にある必要なデーター選んで一つ表にまとめる方法を教えてください。 ・テーブル1は商品名、商品コード、棚番号のデーター ・テーブル2は商品名、単価 ・テーブル3は商品名、在庫数 これら全てのデーターを新しいテーブルに一つの表するにはどのようにしたら良いのでしょうか? Accessは使ったことが無く初めて目にする超初心者の私にでも分かる位のレベルで教えてください。 (クリエとかテーブル等の役割や意味も分からないです) 他に頼れる人はいないので自分自身で何とかするしかありません。

  • 在庫管理システムについて

    お願いします。 アクセスで薬品の在庫管理システムを作っています。 毎日の仕入・払出を入力するトランザクションテーブルと、薬品在庫を保持・更新するマスターテーブルに分けて管理したいのですが、次のような流れを考えています。 1.開始棚卸数量を在庫テーブル(マスター)に入力。 2.日々の仕入・返品等を仕入テーブル(トランザクション)に入力。 3.日々の払出・調整等を払出テーブル(トランザクション)に入力。 4.仕入・払出の各テーブルを更新処理して在庫テーブルの数量を更新。 5.月末の実地棚卸数量により在庫テーブルを更新。棚卸差異を分析。 6.更新後の在庫数量を翌月開始数量とする。 日々の取引量は平均して200件くらいで、薬品の種類は500種類くらいです。 アクセスのDBはよく作っていますが、こういう形(トランザクション+マスタ)は初めて作るのであまり自信がありません。 まずは、テーブル構成やフローについてアドバイスをいただけませんか? それと、インターネットで参考になるページがあればご紹介お願いします。

  • テーブルデータの並び替えについて。

    テーブルデータの並び替えについて。 環境:ACCESS2000 状況:テーブル2つ(マスターテーブル、マスターコピー)    メインフォーム上にサブフォームを置き、マスターコピーのデータを    表示させているのですが、そこで並び替えをする予定。    マスターテーブルのフィールド     種類  /  サイズ  /  商品名    ※マスターコピーも同様(マスターテーブルを全てコピーのため) 現在のコード: Dim db As Database Set db = CurrentDb db.Execute "DELETE * FROM マスターコピー" db.Execute "INSERT INTO マスターコピー SELECT * FROM マスターテーブル" SELECT 種類, サイズ, 商品名 FROM マスターコピー ORDER BY 種類, サイズ ←ここでエラー エラー内容・・・構文エラー まだACCESS未熟のため完全には理解できておらず ネット検索等で調べてコードを組んでいるため 何が間違っているのかわからず、ご質問させて頂きました。 お手数お掛けしますが、何卒ご教授の程宜しくお願い致します。

  • 複数のテーブルか一つのテーブルか教えて!!

    いつもお世話になっています。 今回商品テーブルを作る事になったのですが、商品の分類ごとに項目数が違うのでどうしようかと思っています。 1つ目の商品には、 商品番号|商品名|値段|画像パス|在庫数|情報1|情報2| 2つ目は 商品番号|商品名|値段|画像パス|在庫数|情報1|情報2|情報3|情報4|情報5| など項目数が違うので同じテーブルに入れるとうえの商品は情報3、情報4、情報5がからになります。 商品は最低6個ほど分類されるので、もし商品ごとにテーブルを作るとなると6テーブルは最低いることになります。 私的にはテーブルを商品ごとに分けたほうがやりやすいようにおもうのですがやはり商品テーブルを1つにしてまとめたほうがいいのでしょうか? イメージ的には電化製品店などをイメージするといいかと思います。 キーボードの商品テーブル、マウスの商品テーブル、プリンタの商品テーブルのようにテーブルを分けたらいいかなと思っているんですがどうなんでしょう?

    • ベストアンサー
    • MySQL

専門家に質問してみよう