• ベストアンサー

アクセス初心者です。(クエリについて)

クエリでテーブルとテーブルをくっつけたいと思います。 T_MAIN→商品コード、商品一連番号、管理部門、統括責任者、マネージャー、担当者、保管場所、保管方法とあります。管理部門、保管場所、保管方法については小テーブルを作りました。それを元にT_MAINにてコンボボックスで項目一覧から選べるように作りました。統括マネージャ、マネージャー、担当者についてはT_名簿からこれも同様にコンボボックスで選べるように作りました。一つのフォーム内に非連結のテキストボックス(入力画面)と参照画面みたいな感じで、T_MAINに入っている情報一覧を並べて表示したいのです。T_MAINはコードで管理している部分が多いのでリストに表示する内容はクエリから引っ張ってくるようにしました。コンボボックスで表示がされるように、リストボックスの中に列幅2cm;3.808cm;3.808cm;2.508cm;4cm;2.503cm;等と指定して、値集合タイプにテーブル/クエリ、値集合ソースにクエリ名として表示するようにしました。管理部門、保管場所、保管方法はT_MAINと各小テーブルでリレーションを結びました。統括責任者、マネージャー、担当者については、一つのテーブルT_名簿とリレーションと結ぶと、クエリの内に入っているデータが消えてしまいます。リレーションをはずすと、3件しか入れていないものが、123、123、123と件数が増えていきます。解決策はないのでしょうか??宜しくお願いします。

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

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

>サブフォームもできなかったのですが。 フォームデザインビューでコントロールツールボックスからサブフォームをフォーム上にドロップするのですよ いくら失敗しても壊れたりしませんからいろいろトライしてみては それと基本的なことはここで質問するより入門書等で調べられたほうがいいですね たっぷりとスペースを割いて系統立てて説明されています ここのようなボードでは分からないところ1点に絞って聞く というのが上手な利用の仕方です

noname#49321
質問者

お礼

ありがとうございます。色々試してみます。

その他の回答 (8)

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

いっぱい疑問もありますし 問題点もいっぱいありますが ひとつずつ片付けていきましょう まずクエリですが、どうしてMAINを2回も取り込んでいるのですか これが同じレコードがいくつも取り出される原因でしょう メインを1回だけ取り込み 他のテーブルを参照しているフィールドには それぞれのテーブルを取り込んで結合するだけでいいのですよ ただし同じテーブルを参照しているフィールドが複数あるときはその数分取り込みます レコードを表示させるにはリストボックスなんかより サブフォームか別フォームのほうがいいんじゃないの それならカレントレコードの値を参照するには FORMS!フォーム名!フィールド名で取り出せます コードを名前で表示させたければ テキストボックスをコンボボックスに変えてやればいいですね

noname#49321
質問者

お礼

お返事ありがとうございます。クエリを見直していったら、端の方にメインテーブルがありました。これが2回取り込まれていたんですね・・。クエリ上ではきちんと3つ表示することが出来ました。ありがとうございました。(数字)で入っていっていたところもすべて名前で見れます。このレコードを表示するにはリストボックスしか思いつかなかったのですが・・。別フォームというのは新たにフォームを1つ作るということになるのでしょうか・・?サブフォームもできなかったのですが。テーブルクエリで取り込みたいテーブルを2つ選んで、選択したフィールドに全て選んで移動させます。サンプル画面というものがでてきません。普通のフォーム画面が出てきます。

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

>最初の質問でしているのですが・・。4行目から ??? >●一つのフォーム内に非連結のテキストボックス(入力画面)と参照画面みたいな感じで、 >T_MAINに入っている情報一覧を並べて表示したいのです。 >クエリで表示されているものを非連結のテキストボックスで表示参照が出来るのでしょうか?? この中のどれが非連結のフォーム? クエリの情報も丁寧に書いていただきましたが余計なことばっかりで これじゃ肝心なことがなにも分からないですね そのクエリをSQLビューで表示し、それをここに貼り付けてください リスとボックスは文字通りリストボックスでしょうね コンボボックスではなく

noname#49321
質問者

補足

SELECT T_MAIN.商品コード, T_MAIN.商品一連番号, T_MAIN.管理部門, T_MAIN.統括責任者, T_MAIN.マネージャー, T_MAIN.担当者, T_MAIN.保管場所, T_MAIN.保管方法, T_MAIN.特記事項, T_MAIN.更新日 FROM T_MAIN, ((((T_名簿 AS T_名簿_1 INNER JOIN ((T_保管方法 INNER JOIN (T_保管場所 INNER JOIN T_MAIN AS T_MAIN_1 ON T_保管場所.保管コード = T_MAIN_1.保管場所) ON T_保管方法.保管方法コード = T_MAIN_1.保管方法) INNER JOIN T_管理部門 ON T_MAIN_1.管理部門 = T_管理部門.部門コード) ON T_名簿_1.コード = T_MAIN_1.名簿) INNER JOIN T_名簿 ON T_MAIN_1.統括責任者 = T_MAIN.コード) INNER JOIN T_名簿 AS T_名簿_2 ON T_MAIN_1.マネージャー = T_名簿_2.コード) INNER JOIN T_名簿 AS T_名簿_3 ON T_MAIN_1.担当者 = T_名簿_3.コード) ; リストボックスはリストボックスです。 一つのフォームに非連結のテキストボックスを10個作ります。 それぞれに商品コード、商品一連番号、管理部門、統括責任者、マネージャー、担当者、保管場所、保管方法、特記事項、更新日と名前をつけます。で、その下でもいいですし横でもいいのですがリストボックスを1つ作ります。それの値集合タイプをテーブル/クエリにして、値集合ソースをqry_MAIN_表示にして、列数を10.列幅を1cm;1cm;2cm;2cm;等としてそのリストボックスの中の文字をクリックしたら非連結のテキストボックスに各それぞれ名称が一致するテキスト内にデータが反映されて入っていくようにしたいのです。同じ方法でフォームは何個か作ったのですが、数字データで保管されてしまっているものをまたテキストで表示して・・となると上手くいきません。宜しくお願いします。

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

>クエリは教えていただいたとおりに作成しました。 でもおかしいいのでしょ、だったらその情報を出さなきゃ >非連結のフォーム(リストボックス)には文字として表示されないのはどうしてなのでしょうか? 非連結のフォームってなに? そんなものここまでの話で出てきていないですよ

noname#49321
質問者

補足

>でもおかしいいのでしょ、だったらその情報を出さなきゃ T_MAINをもとに作成しました。 ●管理部門については、表示コントロールをリストボックスにし、値集合タイプをテーブル/クエリ。値集合ソースをqry_管理部門、連結列を1列数を2、列幅を0cm;2cmとしました。で、T_MAINの管理部門とT_管理部門の部門コードをリレーションで結びました。 ●統括責任者、マネージャー、担当者については、全て表示コントロールをリストボックスにし、値集合タイプをテーブル/クエリ。値集合ソースをqry_名簿、連結列を1、列数を2、列幅を0cm;2cmとしました。で、T_MAINとT_名簿とT_名簿1とT_名簿2としてT_MAINの統括責任者とT_名簿のコードを結び、同様にT_MAINのマネージャーとT_名簿1のコードを結び、T_MAINの担当者とT_名簿のコードを結びました。いづれも表示コントロールはリストボックス。値集合タイプはテーブル/クエリ、値集合ソースはqry_名簿_表示。連結列を1、列数を2、列幅を0cm;2.5cmとしました。 ●保管場所については、表示コントロールをリストボックスにし、値集合タイプをテーブル/クエリ。値集合ソースをqry_保管場所、連結列を1列数を2、列幅を0cm;2cmとしました。で、T_MAINの保管場所とT_保管場所の保管コードをリレーションで結びました。 ●保管方法については、表示コントロールをリストボックスにし、値集合タイプをテーブル/クエリ。値集合ソースをqry_保管方法、連結列を1列数を2、列幅を0cm;2cmとしました。で、T_MAINの保管方法とT_保管方法の保管方法コードをリレーションで結びました。 でクエリは作成しました。 クエリ内では数字列も文字列に置き換わっています。ただ、3件しか入っていないのに同じ情報が3度繰り返され9件入っている状態です。 【qry_MAIN_表示】 商品コード 商品一連番号 管理部門 統括責任者 マネージャー 担当者 保管場所 保管方法 >そんなものここまでの話で出てきていないですよ 最初の質問でしているのですが・・。4行目から ●一つのフォーム内に非連結のテキストボックス(入力画面)と参照画面みたいな感じで、T_MAINに入っている情報一覧を並べて表示したいのです。クエリで表示されているものを非連結のテキストボックスで表示参照が出来るのでしょうか?? 宜しくお願いします。

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

>件数はかなり減ったのですが、 一番怪しいところを指摘したのですがまだ他にも変なところがあるのでしょう >管理部門、保管場所、保管方法 についてはそれぞれのマスタテーブルがあるんですよね となるとアップされた情報からだけでは原因らしきものは見えてきません もっと続けるのならすべてのテーブルの詳しい情報 クエリの詳しい情報が必要です

noname#49321
質問者

補足

(管理部門) ・部門コード(主キー)・・・数値型 ・部門名称・・・テキスト型 ・更新日・・・日付/時刻型 (保管場所) ・保管コード(主キー)・・・数値型 ・保管場所名・・・テキスト型 ・更新日・・・日付/時刻型 (保管方法) ・保管方法コード(主キー)・・・数値型 ・保管方法名・・・テキスト型 ・更新日・・・日付/時刻型 上記の3項目についてはフォーム上ではリストボックスで選べるように作ってあります。コードと一緒に名称も参照できます。メインテーブルには数字で管理されています。統括責任者、マネージャー、担当者についてはT_名簿から名前を参照させています。 (T_名簿) ・コード(主キー)・・・数値型 ・名称・・・テキスト型 ・ふりがな・・・テキスト型 ・パスワード・・・テキスト型 ・参照・・・Yes/No型 ・更新・・・Yes/No型 ・保守・・・Yes/No型 ・更新日・・・日付/時刻型 クエリは教えていただいたとおりに作成しました。クエリを開くと、きちんと数値データが文字に変わって入っています。 あと、非連結のフォーム(リストボックス)には文字として表示されないのはどうしてなのでしょうか?クエリから引っ張ってきています。クエリでは文字として表示されているのに、フォームにそれを引っ張ってくると、元の状態の数字一覧になってしまっています。 分かりにくかったらすみません。宜しくお願いします。

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

>3回ドロップってなんですか・・・?? 最初の質問の >統括責任者、マネージャー、担当者については、 >一つのテーブルT_名簿とリレーションと結ぶと、 この部分です 統括責任者、マネジャー、担当者用にT_名簿をクエリデザインビューに3回ドロップします 1回だけ取り込んで3つのフィールドに結合したのではおかしくなります

noname#49321
質問者

補足

T_MAINに統括責任者、マネージャー、担当者と3つあるので、T_名簿をクエリのデザインビューにしたときに3ついれました。でT_MAINの統括責任者とT_名簿のコードにリレーションを持たせました。T_名簿1も同様。T_名簿2も同様。クエリで見たら、件数はかなり減ったのですが、データが3件しか入っていないのに9件」入っています。それもやっぱり重複で123・・×3で同じデータが繰り返し3件ずつ入っています。何が悪いのでしょうか・・・。 

noname#140971
noname#140971
回答No.3

<T_名簿> ID________________ 数値型 商品コード_____ 数値型 担当者_ID______ テキスト型 <T_名簿> ID________________ 数値型 区分_____________ 数値型 担当者_ID______ テキスト型 のミスです。

noname#49321
質問者

お礼

何度も丁寧にありがとうございます<m(__)m>

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

>統括責任者、マネージャー、担当者については、 >一つのテーブルT_名簿とリレーションと結ぶと、 ひとつのテーブルと結合するのではなく そのテーブルを3回ドロップし、それぞれと結びます

noname#49321
質問者

補足

3回ドロップってなんですか・・・??T_MAINをクエリのデザインビューに3つ作って、1つのT_MAINと管理部門、保管場所、保管方法、統括責任者を結んで、T_MAIN1とマネージャーを1つのリレーションで結びT_MAINと担当者を1つのリレーションで結びました。でもそのテーブルのデータは729件入っています。T_MAINにはデータは3件しか入っていません。何が悪いのでしょうか・・。宜しくお願いします。

noname#140971
noname#140971
回答No.1

テーブル作成は、ステップバイステップで・・・・。 例えば、[T_Main.担当者_ID]列だけを[T_名簿]から参照させるには次のようにしたらいいです。 <T_Main> ID________________ 数値型 商品コード_____ テキスト型 担当者_ID______ 数値型 <T_名簿> ID________________ 数値型 商品コード_____ 数値型 担当者_ID______ テキスト型 次は、実際のサンプルデータを登録してテーブルを開いたものをコピーしたものです。 <T_Main> ID_____商品コード___担当者_ID 1______AAA ___________山田 太郎<---実際は<3> 2______BBB___________山下 五郎<---実際は<4> <T_名簿> ID___区分______________氏名 1____統括責任者_____村上 健二 2____マネージャー____鈴木 一郎 3____担当者____________山田 太郎 4____担当者____________山下 五郎 [T_Main.担当者_ID]は、コンボボックスから選べるようになっています。 値集合ソース=SELECT T_名簿.ID, T_名簿.氏名 FROM T_名簿 WHERE T_名簿.区分=3; 連結列=1 列数=2 列幅=0cm;2cm [T_名簿.区分]も、コンボボックスから選べるようになっています。 値集合ソース=1;統括責任者;2;マネージャー;3;担当者 連結列=1 列数=2 列幅=0cm;2cm さて、この回答ですと、<T_Main.担当者_ID>のルックアップ機能の設定要領が一目瞭然です。 ですから、仮に正しく機能しないのであれば回答者も容易に問題点を見つけれます。 全てを問うのではなく、[担当者]だけに限定されてはいかがですか? その他は、単に、その応用に過ぎませんから・・・。

noname#49321
質問者

補足

ご回答ありがとうございます。してみたのですが、数字表示から変わりません。。

関連するQ&A