Access 2重のルックアップフィールドで、ID番号ではなく、名称を表示したい

このQ&Aのポイント
  • Access 2重のルックアップフィールドで、ID番号ではなく、名称を表示したい。
  • Access 2010を最近始め、データベースの正規化について困っています。メーカーテーブル、部品テーブル、在庫テーブルの関連性がうまく機能していないようです。
  • 部品テーブルのルックアップフィールドではメーカー名が表示されますが、在庫テーブルのルックアップフィールドではメーカーIDが表示されてしまいます。メーカー名を表示する方法を教えてください。
回答を見る
  • ベストアンサー

Access 2重のルックアップフィールドで、ID番号ではなく、名称を

Access 2重のルックアップフィールドで、ID番号ではなく、名称を表示したい。 Access 2010を最近昨日から始めました。データベースの正規化がうまくないかもしれませんが、以下の現象で困っています。 ・メーカーテーブル:メーカーID/メーカー名 ・部品テーブル:部品ID/メーカー名:メーカーテーブルよりルックアップフィールド(メーカーテーブルのIDとリレーション) ・在庫テーブル:在庫ID/部品名:部品テーブルよりルックアップフィールド(部品テーブルの部品IDとリレーション) 上記のテーブル構成だとします。 部品テーブルでは、ルックアップフィールドで、”メーカー名”が表示されています。これは問題ありません。 次に在庫テーブルで、部品をルックアップテーブルで選ぼうとすると、メーカー名が文字列で表示されてほしいところが、メーカーIDの数値がでてしまいます。部品テーブルのメーカー名が”数値型”で管理されていることが原因だと思いますが、ここをメーカーIDではなく、メーカー名を出すことはできますでしょうか?

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

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

まず ご質問への直接の回答ではない事をご容赦ください >部品テーブルでは、ルックアップフィールドで、”メーカー名”が表示されています。 >次に在庫テーブルで、部品をルックアップテーブルで選ぼうとすると、  基礎データを入力しようとされているのですね?  Accessでデータを入力する際は"テーブル"を開いて直接入力するのではなく、"フォーム"を作ってフォーム上で入力するべきです。  テキスト本では とりあえずテーブルを作ってレコードを入力して とりあえずAccessらしく動いていることを見せる必要があるので "テーブル"に直接入力させる必要があるのかもしれませんが、実際にAccessを活用しだせばこんなことはありません。   (私も素人なのでうまく言葉にできませんが、操作ミスによるデータの誤消去を防ぐためと、フォームのいろいろな機能を利用して入力の効率を上げるため、と私は理解しています。)  "フォーム"上に"コンボボックス"を作成すれば同じことができます。 >・部品テーブル:部品ID/メーカー名 "部品テーブル"のフィールド(標題)は"メーカー名"ではなく"メーカーID"にしなければいけません (あと 部品名、 型番、 などが必要かと思いますが…) >・在庫テーブル:在庫ID/部品名 これも同様に"部品名"ではなく"部品ID”とするべきです >部品テーブルでは、ルックアップフィールドで、”メーカー名”が表示されています。これは問題ありません。  入力した文字列を見ている限りでは問題ないかもしれませんが、データベース的には問題ありです。  ほんとにうまく説明できなくて申し訳ないですが、"テーブル"はあくまでデータの入れ物、シンプルにシンプルにしなければなりませんし、データベースが完成した後にはテーブルを開くこと自体を最小限にするよう操作するべきです  データを加工するのは"クエリ"を使って、ということになります  "部品クエリ"を作ってみました  フィールド"メーカーID"に数値を入力すると フィールド"メーカー名"に自動的にメーカ名が出ます  "部品クエリ"に入力したデータはそのまま"部品テーブル"に保存されます  Access、 習得できると世界が広がりますよ  頑張ってください  (私も習得には程遠いですが (^_^;)  )

cortotbach
質問者

お礼

大変ご丁寧なご回答誠にありがとうございます。 また画像(つまり、その為にサンプルデータを作成まで頂きまして)までありがとうございます。 ・データ入力はテーブル直接ではなく、フォームで(今回の用途ではコンポボックスなどで) ・クエリによって、必要なデータの選択 もともとウェブDB系でSQLなどは慣れているのですが、いざaccess使ってみると、GUI過ぎて逆に混乱してしまい、本をざっと読んで要素の知識は掴んでいたのですが、その全体のつながりが理解できていませんでした。 今回ご指摘の件と、実際に少し作ってみていっきりにそれがつながりすっきり致しました。 大変ありがとうございました。感覚がつかめたので一気に仕事が進みそうです。(素直にweb dbで作れば良かったと後悔しはじめていたのでよかったです)

その他の回答 (3)

回答No.4

一回、一画像しか添付できないのですね… デザインビューも添付しときます "部品"というにはふさわしくない例になってしまいましたm(__)m

回答No.3

ANo.2です すみません 画像添付に失敗しました

  • 007MUKADE
  • ベストアンサー率41% (286/694)
回答No.1

クエリーを使って 欲しい名称を テーブルより 拾い出します。 ・・・簡単な説明ですが まず ”クエリー ”を勉強して下さい。   ヘルプにものってますよ~~ 頑張って~~~!

関連するQ&A

  • Access2007のルックアップフィールドについて

    Access2007のルックアップフィールドについて 以下の2点について教えてください。 テーブルにルックアップフィールドを作成したあと、 (1)自動的に作成されたリレーションシップを削除しても、  ルックアップ列が表示されるのはなぜですか? (2)ルックアップ列の表示を解除したいのですが、どうすればいいですか?

  • アクセスのテーブルでのルックアップフィールド表示

     いつもお世話になっております。  ACCESS2016を使用しています。  お聞きしたいのは、条件によってテーブルのルックアップフィールドに表示されるデータを変えたいのですが、その方法が分かりません。  フォームでのやり方は分かりますが、テーブルで表示させたいと思っています。  例えば、下記のようなテーブルがあるとします。 [入力用テーブル名:T_元号別担当者] 元号フィールド、担当者フィールド 平成      a 平成      b 令和      c 令和      d [ルックアップ用テーブル名:T_平成担当者] 担当者フィールド a b [ルックアップ用テーブル名:T_令和担当者] 担当者フィールド c d  イメージは、元号フィールドが平成の場合、担当者フィールドにT_平成担当者を、 元号フィールドが令和の場合、担当者フィールドにT_令和担当者をルックアップとして 表示させたいと考えています。  このやり方をどうぞご教示お願いいたします。

  • access フィールドの数値を使って計算したい

    あるテーブル内に様々な数値をフィールドに入力して、それらの数値をフォームでルックアップを使用して計算したいのですが、accessはどうやら主キー(id)の数値(1、2、3…)を使って計算してしまいます。どのように設定すればよいのでしょうか。 テーブル1 id  フィールド1 1    5 2    10 3    15 4    20 フィールド1の数値をフォームにてルックアップで選んで計算したい(クエリ内の計算式に組み込みたい)。 よろしくお願いいたします。 access2010使用

  • ルックアップフィールドについて

    Accessをデータベースにして練習中です。 テーブルが複数あり、デザイナで基本フォームを作ってあります。 参考書にルックアップフィールドの作成の仕方が載っていたのですが わからなくなってしまったのでどなたか教えてください。 下のコードを実行すると、ルックアップフィールドが空白になってしまいます。 データセット名:業務DataSet 登録社員テーブル:社員ID、氏名、住所、電話の4列 成績テーブル:社員ID、成果、残業時間の3列 成績テーブルに対応したフォームをデザイナで作成。 社員IDは「社員IDComboBox」、ルックアップフィールドはツールボックスから作り、「氏名TextBox」にしました。  ルックアップフィールドのTextBoxに社員IDに対応した氏名を表示したいと思っています。   Private Sub 社員IDComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 社員IDComboBox.SelectedIndexChanged If 社員IDComboBox.Text = "" Then Exit Sub      End If Dim dr As 業務DataSet._登録社員Row dr = 業務DataSet._登録社員.FindBy社員ID(CType(社員IDComboBox.SelectedText, Integer)) If dr Is Nothing Then 氏名TextBox.Text = "" Else 氏名TextBox.Text = dr.氏名 End If End Sub 色々やっていたら何がおかしいのかわからなくなってしまいました。 すみませんが教えてください。 それと、ComboBoxに登録社員テーブルの社員IDの一覧を表示しようと思ったらどのようにすればよいのですか?

  • アクセスで、1つのフィールドに2つのリレーションをかけると。

    メールのデータベースを作っています。 T_メール本体のテーブル (フィールド項目は) ID(主キー) 宛先名 件名 本文 T_CCリストのテーブル (フィールド項目は) メールID(主キー) ID 宛先名 T_BCCリストのテーブル (フィールド項目は) メールID(主キー) ID 宛先名 これに、T_メール本体のIDとT_CCリストのIDをリレーションさせて さらに、T_メール本体のIDとT_BCCリストのIDをリレーションさせると いうのは可能でしょうか?こうすると、表示は出来ますが、入力及び更新が出来なくなるのですが。 以上、よろしくお願い致します。

  • accessのルックアップフィールドのような複数値を持つフィールドの機

    accessのルックアップフィールドのような複数値を持つフィールドの機能があるデータベースはOracle,MySqlみたいなDBにはないでしょうか? それかない理由でもあるのでしょうか?結構便利だとは思うんですが検索して調べてもなかなかでてこなかったです。

  • Access2007でルックアップのリストに数字が出る

    Access2007でルックアップの設定を行うと、リストに数字が出てきてしまいます。↓のような場合どのようにしたら、文字列のリストを作れますか? テーブル1: 主キー フィールドA 01   収入 02   支出 テーブル2: 主キー フィールドA(テーブル1のルックアップ) フィールドB 01   収入                 給与 02   収入                 その他 03   支出                 光熱費 04   支出                 食費 テーブル3: 年月日   フィールドB(テーブル2のルックアップ) H21/05/01 『ここのルックアップ列をテーブル2のフィールドAとフィールドBを選択するとフィールドAの値が01、02・・・と表示されてしまう。』 両方のフィールドのルックアップを文字列で表示するにはどうしたらいいですか? ※上記解決方法が困難な場合はテーブル3に於いて、テーブル1のルックアップの値を指定してから、その値に対応するテーブル2のレコードを選択する方法でもいいです。 できれは両方知りたいです。 宜しくお願い致します。

  • Accessのテーブルフィールド属性の抽出

    Access2003で作成したデータベースで、各フィールド(IDや名前、住所など)の属性(数値型といったデータ型やさらなる詳細(「標準」「ルックアップ」で設定できる内容)、長整数型、値要求「いいえ」など)を一度に抽出することはできないでしょうか。 よろしくお願いします。

  • Accessで、フィールドにルックアップリストを設定した場合に表示される数値について

    Accessで、フィールドにルックアップリストを設定したときに、 表示される数値について不明な点があります。 詳細は以下のとおりです。 【詳細】 次のようなテーブルがあります。(「顧客名簿」テーブルと「地域ID」テーブル)  ■テーブル名「顧客名簿」   顧客ID  顧客名  地域ID 住所   001 佐藤一郎  8 大阪府堺市   002 鈴木二郎 8 大阪府八尾市   003 山口三郎  8 兵庫県姫路市   004 野中四郎  9 広島県広島市   005 早川博史  4 千葉県習志野市   006   山本剛史  3 福島県福島市 -------------------------------------------------------------------------------  ■テーブル名「地域リスト」   No  都道府県名 地域ID   1  北海道 1   2  青森県 2   3  秋田県 2   4  岩手県 2   5   宮城県 3 6 山形県 3 7 福島県 3 8 茨城県 4 9 栃木県 4 10 群馬県 4 11 埼玉県  4   12 千葉県  4       ・       ・           ・             ・   29 大阪府 8 30 兵庫県 8  ※途中、No.13からNo.28までの表示を省略しました。 ------------------------------------------------------------------------------ 次の操作を行います。 【操作手順】  (1)テーブル「顧客名簿」のデザインビューを表示する。  (2)「地域IDフィールド」の、「データ型」を変更するために、    「地域IDフィールド」の「データ型」をクリックし、 一覧から「ルックアップウィザード」を選択する。  (3)「テーブルまたはクエリの値をルックアップ列に表示する」を選択する。  (4)「次へ」をクリック。  (5)「表示」エリアから「テーブル」を選択し、リストの一覧から 「テーブル:地域リスト」を選択する。  (6)「次へ」をクリック。  (7)ルックアップ列に表示するフィールドを表示順に選択する。    まず、キー列「No」を選択、次に「地域ID」、続いて「都道府県」を選択する。 (8)「次へ」をクリック。 (9)「キー列を表示しない(推奨)」のチェックボックスがオンになっていることを確認し、    「次へ」をクリック (10)ラベルの表示が「地域ID」となっていることを確認し、「完了」をクリック (11)保存を確認するダイアログボックスが表示されるので、「はい」をクリック                                  以 上 ------------------------------------------------------------------------------- 【疑問点】 上記操作を実施後、 テーブル「顧客名簿」を表示した時に、 次のように表示されている。(地域IDの数字が変更されている。) ■テーブル名「顧客名簿」  顧客ID  顧客名  地域ID 住所   OO1   佐藤一郎  4 大阪府堺市   002 鈴木二郎 4 大阪府八尾市   003 山口三郎  4 兵庫県姫路市   004 野中四郎  4 広島県広島市   005 早川博史  2 千葉県習志野市     006   山本剛史  2 福島県福島市 このとき、地域IDの数値が、 何故、このように、「4」や「2」に変わるのかがわかりません。

  • Access ページで客先名称が表示出来ないのですが・・・

    以前、Accessのページのフィールドリストが繋がらないと質問させて頂いた者です。フィールドリストは解決できたのですが、 今、会社で物件登録リストをAccessで作成しようとしていて、得意先データと物件登録データをテーブルに作成して、テーブルを元にデータアクセスページをウィザードで作成し、Webブラウザで確認すると、得意先名称が表示されずにテーブルの主キーである得意先番号が表示されてしまいます。 自分で考えられる原因としては、テーブルでルックアップウィザードを使用して得意先データから得意先名称が一覧で選べるようにしているからかな~と思っているのですが、データアクセスページでプロパティのどこを直せば直るのか、いろいろいじってみるのですが全く表示されません。 フォームではルックアップウィザードを使用していてもちゃんと表示されています。 形としては、フォームで客先名称等を入力してデータアクセスページでは入力出来ない様にして表示するだけにしておきたいので、得意先名称が表示されないと非常に困ります。 また、フィールドでは必要なのでテーブルでコンボボックスをテキストボックスに戻したくはないのです。 Webなどで探してはいるのですが、これだ!っていう解決法に至らず大変困っています。 どなたかご教授を御願いいたします。 また、Accessの参考書でいいのがあるよっていう情報でも結構ですので宜しく御願いいたします。

専門家に質問してみよう