• ベストアンサー

Accessのフォームで

教えてください。下のようなテーブルがあり、これを元にフォームを作成したいのですがいい方法が見つかりません。 【テーブル】  品物テーブル(品物ID、品物、製作所)  社員テーブル(品物ID、社員コード、氏名) このテーブルを元にして下のようなフォームを作りたいのです。 【フォーム】  品物ID [テキストボックス]  品物 [テキストボックス]  製作所 [テキストボックス]  社員コード [テキストボックス]  氏名 [テキストボックス]  社員コード [テキストボックス]  氏名 [テキストボックス]  社員コード [テキストボックス]  氏名 [テキストボックス] ※社員コード、氏名が3つあるのは、同じ品物を3人が作成することがあるため。(この部分で悩んでいます) このようなフォームを作ることは可能でしょうか? また参考になるようなサイトなどあれば教えてください。 よろしくお願いします。

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

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

ウーン!道のりは厳しいですぞ! 試しに、希望に近いフォーム<品目別注文記録>を作成してみました。 <品目別注文記録> ID______[______1] 品名____[品物1________] 製作所__[A製作所______] =========================================== __ID 社員コード____氏名 [__1][101_____][鈴木_一郎_____] [__2][102_____][中村_太郎_____] =========================================== [社員登録] ・社員登録フォームは別に用意します。 品目をメインフォームで、サブフォームで注文記録を管理するという仕組みです。 <ステップ1:テーブル設計> <Employee> ID  社員コード 氏名 1   101    鈴木 一郎 2   102    中村 太郎 3   103    田中 健一 <Goods> ID  品名   製作所 1   品物1  A製作所 2   品物2  B製作所 3   品物3  C製作所 <Order> ID  Goods_ID Employee_ID 1   1    1 2   1    2 3   2    1 <ステップ2:リレーションシップの設定> これは、判ると思いますので割愛します。 <ステップ3:フォームの生成> この段階は、フォーム ウィザードで簡単にできます。 [フォーム ウィザード] ByGoods ByOrder ByEmployee Goods_ID,品名,製作所 +-------------+ |Order_ID,社員コード、氏名、| |Goods_ID,Employee_ID   | |             | +-------------+ これで、冒頭のフォームが完成します。

bo281
質問者

お礼

これを参考にして完成することができました。ありがとうございました!

その他の回答 (3)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

私も#2の方のようにサブフォームを設定する方が人数を考えないでいいので楽だと思いますが... どうしてもというのであれば 品物テーブル(品物ID、品物、製作所、社員コード1、社員コード2、社員コード3) としてフォームを作成 社員テーブル(社員コード、氏名)からDblookup関数を使って氏名を取得して表示でしょうか? 例:氏名1のコントロールソースに =Dblookup("氏名","社員テーブル","[社員コード]='" & 社員コード1 & "'")

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

社員テーブルに品物IDが入っているのはなんか変ですね どの社員がどの品物を担当しているかというテーブルでしょうか だったら  品物テーブル(品物ID、品物、製作所)  社員テーブル(社員コード、氏名)  担当表(品物ID、社員コード) のようにするほうがいいですね で、品物ごとに担当者を一覧したければ 品物テーブルから作ったフォームに 品物テーブルと担当表から作ったクエリをソースとするフォームを 品物IDでリンクさせてサブフォームとしてはめ込みます イメージは ------------------------------  品物ID [テキストボックス]  品物 [テキストボックス]  製作所 [テキストボックス] -----------------------  社員コード  氏名 |  社員コード  氏名 |  社員コード  氏名 | ----------------------- ----------------------------- のようになります

bo281
質問者

お礼

参考になりました。ありがとうございます!

回答No.1

俺はデータベース・Accessの素人なので的外れかも/信頼しないほうがいいかも。 自分なら 製作所テーブル(製作所ID 製作所名) 品物テーブル(品物ID、品物名) 社員テーブル(社員コード、氏名) 製作情報テーブル(製作情報ID[主キー]、品物ID、製作所ID, 社員コード) っていう感じに作るかな。 品物消したら製作所ごと消えちゃうのは嫌だし 品物と社員コードを連結させたものを主キーにしてもよさそうな気もするけど。 製作情報テーブルには品物IDも製作所IDも社員コードも複数出てくる形で。 (つまり同じ品物IDでも社員が違えば製作情報IDも異なる) まぁ実際のフォームではテキストボックスではなく、 リストボックスかコンボボックスあたりで自分なら作りそうな気がする。 (labelプロパティが「追加」になったコマンドボタンでも配置して) アドバイスになればいいけど・・・・