Accessでデータベースを作成し、商品名を自動表示する方法

このQ&Aのポイント
  • Accessでデータベースを作成し、商品名を自動表示する方法について教えてください。
  • テーブルやクエリを使用して、商品番号を入力するとマスタテーブルに登録されている商品名等の情報が表示されるようになっていますが、新規追加用フォームを閉じても商品名が反映されません。
  • VBAの' Requery 'や ' Refresh 'を試しましたが、うまくいきませんでした。どのようにすれば自動で商品名が表示されるようになるでしょうか?
回答を見る
  • ベストアンサー

Access アクセスについて

Accessでデータベースを作っています。 テーブル、クエリは下記のようになっており、リレーションシップで紐付けしてあります。 クエリからフォームを作成し、商品番号を入力することでマスタテーブルに登録されていれば自動で商品名等の情報が表示されるようになっています。(フォーム1) 商品番号を入力しカーソルが移動した時、マスタテーブルに該当する項目がなかった場合、マスタテーブルから作成した新規追加用のフォームが表示されるようになっています。(サブフォームではありません) 新規追加用フォームに商品名を入力し、閉じてもフォーム1の商品名の欄に反映されません。新規追加用フォームを閉じる時にVBAで”Requery”,”Refresh”もやってみましたがダメでした。商品番号を入力し直すと表示されます。 どうすれば自動で商品名が表示されるようになるか教えてください。 テーブル1(入力用) 1.ID(主キー) 2.商品番号 3.etc. テーブル2(マスタテーブル) 1.商品番号(主キー) 2.商品名 3.etc. クエリ 1.ID(テーブル1) 2.商品番号(テーブル1) 3.商品名(テーブル2) 4.etc.(テーブル2) 5.etc.(テーブル1)

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

  • ベストアンサー
  • chayamati
  • ベストアンサー率41% (254/607)
回答No.2

お早うございます。補足有難うございます テーブルのデザインに不都合はないようです。 ★紐付の種類(リレーションシップ)は参照整合性ですか >そのとうりです(一対多)  ★1側のテーブルが主テーブル   多側のテーブルがサブテーブル   主テーブルをレコードソースとして作成されたフォームを主フォーム   サブテーブルをレコードソースとして作成されたものをサブフォーム >商品番号を入力しカーソルが移動した時、  マスタテーブルに該当する項目がなかった場合、  マスタテーブルから作成した新規追加用のフォームが表示されるようになっています。(サブフォームではありません) ★新規追加用フォームで追加した後で、フォーム1を開けば反映します。 ★新規追加用フォームにサブフォームを組み込めばVBAは必要ありません  新規追加用フォームのデザインビューのフォームフッターにサブフォームをドラッグ  配置リボン内のツールで各ボックスの形を整えます  添付図参照  主フォームの帳表形式は単票フォーム、サブフォームは帳表フォーム 以上ですが、主フォームを開けばサブフォームも開いて1画面で編集できます 主フォームを帳表形式にすれば商品名をフリガナ順に表示出来、一石二鳥と思うのですがいかがですか

その他の回答 (1)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.1

>リレーションシップで紐付けしてあります。 ★補足願います  紐付のフィールドはどのフィールドですか  紐付の種類(リレーションシップ)は参照整合性ですか   参照整合性とはリレーションの一方が1で、他方が∞ ★マスターテーブルの名称は「M商品」でよろしいですか ★マスタテーブルのフィールドは次でよろしいですか 1.ID    :主キー オートナンバー型 2.商品名  :テキスト型 重複なし 3.標準原単価:数値型 4.標準売単価:数値型 5.フリガナ :テキスト型

zoplho5549
質問者

補足

>紐付のフィールドはどのフィールドですか →入力用テーブルの商品番号とマスターテー  ブルの商品番号です >紐付の種類(リレーションシップ)は参照整合性で  すか →そのとうりです(一対多) >マスターテーブルの名称は「M商品」でよ  ろしいですか →はい >マスタテーブルのフィールドは次でよろし  いですか  1.ID    :主キー オートナンバー型  2.商品名  :テキスト型 重複なし  3.標準原単価:数値型  4.標準売単価:数値型  5.フリガナ :テキスト型 →下記のようになっています  1.商品番号 :主キー テキスト型 重複なし  2.商品名  :テキスト型  3.フリガナ :テキスト型

関連するQ&A

  • Access マスターテーブル

    Accessについて。 テーブル1がID(主キー)、注文日、商品番号、納期など入力欄の項目で、テーブル2が商品番号(主キー)、商品名で商品のマスターテーブルになっています。 商品番号を入力すれば商品名が表示されるようにクエリを作成し、そのクエリからフォームを作っています。 ここまでは良いのですが、新しい商品番号を入力したときに限りフォームから商品名も入力する事でマスターテーブルに登録されるようにしたいのですが、どうすれば良いでしょうか?

  • アクセス2010の操作について

    こんばんは! アクセス2010を勉強しておりますが、さまざまの本を読んでもインターネットで検索しても、なかなか基本を理解できず又周囲にも質問できる人がいなく困っております。 以下の内容について数点の質問をさせて頂きますのでご指導をお願いいたします。 作成内容。 社員の成果を入力できるフォームを作成したく、保存したいデータは社員名、社員コード、成果です。社員名は、コンボボックスから選択を行いたい。(できれば社員名を表示すると、自動的に社員コードも表示したいのですが)以下の方法で作成したのですが、うまくできません(質問項目は下段です) ~作成の流れ~ 〇テーブルを作成・・・以下の2つのテーブルを作成し社員データを予め入力。 ・社員マスタ・・・・・・(フィールドは2つ)  「社員名」(テキスト型)  「社員コード」(テキスト型) ※主キー ・入力テーブル・・・・(フィールドは3つ)  「ID」(オートナンバー型)  「社員コード」(テキスト型)  「成果」(テキスト型) ※主キー 〇「社員マスタ」「入力テーブル」の2つのテーブルからクエリを作成。  ・社員コード同士を結合線で結ぶ(自動的に結ばれます)    (フィールド)  ID            社員名     社員コード   成果  (テーブル)   入力テーブル   社員マスタ  社員マスタ   入力テーブル 〇作成したクエリを基にフォームを作成  社員名をコンボボックスから選択できるように変更(値集合ソース→社員マスタ)  社員名をコンボボックスから選択し、社員コードを入力。成果を入力しようとすると。  入力できません。 (質問です)  (1)成果を入力するためにキーボードを押すと、文字が出ずにエラーメッセージ「レコードを追加でき ません。テーブル"入力テーブル"の結合キーがレコードセットにありません」と表示されますがなぜ でしょうか?  (2)、(1)でエラーメッセージが出ても保存を押すと、新規入力画面のコンボボックスに先ほどの入力 内容が追加されてしまうがなぜでしょうか?  (3)クエリとリレーションシップの使い分けの判断は?(今回はクエリから結合線で結びましたが、リレ ーションシップでも似たような事ができます)  (4)入力テーブルのフィールドは上記の3つでよろしいのでしょうか?  (5)このようなものを作成する時の手順を教えて頂けると非常に助かります。 よろしくお願いいたします。  

  • (ACCESS)入力フォームについて

    こんにちはmynannです またまた困っているのでよかったらヒントを いただきたいと思い質問させていただきます まずテーブルが二つあり 商品マスタには管理番号(主キー)と価格の二つの項目があります。 もうひとつは販売マスタというのがあり フィールドは管理番号、販売可(チェックボックス) の二つです。 この二つはリレーションシップの関係にあります そしてこの二つを一つにした 販売可商品マスタクエリがあります 商品マスタにはすでに多くのデータがあり それ専用の入力フォームもあります 今販売マスタの入力フォームを作りたいのです どのようなものかといいますと 管理番号を入力すると価格用のテキストボックスに 自動的に入力された管理番号の価格(商品マスタから調べると思うのですが)を表示するようにしたいのです 管理番号[       ]←ここに値を入力 価格[       ]←管理番号が入力されると自動的にでる 販売可 □ ←自分でチェックする イメージはこのような感じです 更新後処理を使うということはなんとなくわかるのですが どのような処理をさせていいかわかりません 助けてください!お願いします!

  • Accessの入力設定を自動にしたい

    Access97を使っています。 テーブルA 店舗ID 店舗名(全て、閉店した店も含む) テーブルB 店舗ID 店舗名(全て、閉店した店も含む) 商品番号 商品名 クエリC(選択クエリ) 店舗ID 店舗名(営業している店のみ) 商品番号 商品名 フォームD 店舗ID 店舗名 商品番号 商品名  フォームDから新しくオープンするお店の入力を行いたいのですが、店舗IDを入れるとテーブルAから自動的に店名がフォームDに入力され、入力した内容はクエリCに反映するような設定はどうなるのでしょうか?  テーブルBからクエリCを抽出しています。今日一日考えているのですが、頭がパニックって来ました。 よろしくお願いします。

  • Access2002のリレーションについて。

    販売管理のデータベースを作成しています。 『販売店マスターテーブル』 販売店コード(主キー) 販売店名 郵便番号 住所 電話番号 営業担当者コード 『営業担当者テーブル』 営業担当者コード(主キー) 営業担当者名 『販売伝票テーブル』 伝票番号(主キー) 売上日 販売店コード この中で、『販売店マスターテーブル』から、販売店コード,販売店名,郵便番号,住所,電話番号,営業担当者コードを、 『営業担当者テーブル』から、営業担当者名を使って、新しいクエリを作成しました。 そのクエリを基にフォームを作成しましたが、フォームに新規レコードを入力できません。 念のため、販売店コードを『販売伝票テーブル』からとってきたら、新規レコードが入力できるようになりました。 これは、何か主キーの関係で入力できないんでしょうか。 もし、『販売伝票テーブル』から販売店コードをとらなくちゃいけないとしたら、それはナゼでしょうか・・。 初歩的なことで申し訳ありませんが、とても困っています。 どなたかお分かりになる方、教えて下さい。 よろしくお願いします。

  • Accessでの連鎖更新について

    いつもお世話になっております。 表題の件、アクセスでの連鎖更新についての質問です。 以下のようなテーブルを持っているとしまして T商品マスタ ID:オートナンバー(主キー) 管理番号:INT 商品名:String T部品 管理番号:INT 部品名:String 備考:String T商品マスタとT部品は、管理番号をキーにして1対多になるのですが クエリで T商品マスタ.管理番号 T商品マスタ.商品 T部品.備考 表示自体は、T商品マスタのレコード分のみ表示させて、備考を入力した場合、T部品の管理番号が同じレコードすべてに同じ備考を登録したいのですが、エンティティやクエリの作りについて、どうすればよいか見当がつきません。 T商品マスタの管理番号は、主キーになっておらずNullも許可し重複もあります。 T部品は、主キーがなく同一の管理番号で部品が多数あります。 ネットで調べ、連鎖更新をしようと思ったのですが、エンティティの作成画面でエラーが発生してしまいました。 初心者で、知識がなく説明がうまくできませんが、どうぞよろしくお願い致します。

  • Access アクセス VBA レコード追加

    Access フォームからのレコードの追加方法を教えてください。 テーブル1 ・ID(主キー) ・窓口 ・コストセンター ---------- テーブル2 ・コストセンター(主キー) ・目的 ---------- リレーションシップ テーブル1のコストセンターとテーブル2のコストセンターを一対多 ---------- メインのフォームに”ID”を入力したときにテーブル1に一致するレコードがない場合、新規登録用のフォームが表示されるようになっています。 新規登録用のフォームにレコードを入力してもテーブルに反映されません。 新規登録用のフォームは下記のように作成しています。 また、フォームに”コストセンター”を入力したときに入力したレコードがテーブル2にあっても自動で”目的”が表示されません。 メインフォームにはサブフォームで各テーブルが表示されています。 フォーム ・ID(初期値•••メインで入力したID) ・窓口 ・コストセンター ・目的 ・コストセンター(非表示) 上から順に ・テーブル1 ・テーブル1 ・テーブル2 ・テーブル2 ・テーブル1

  • 一対一のテーブル分割(ACCESS2003)

    ACCESS2003にて、フィールド数が上限の255、レコード数がおよそ1万件の商品マスタテーブルを作ったとします。入力必須フィールドは主キーである商品ID、あと商品名ぐらいで、あとは商品によって入力したりしなかったりするフィールドで、テーブルを開くと空欄が非常に多く目立ついわゆるスカスカの状態になっているとします。そこで商品マスタテーブルを数個に分割(商品の価格情報、商品の品質情報等々)し、商品IDを主キーにもたせ一対一の外部結合でつなげて、密度の濃い(?)テーブルを複数作ったほうが、ファイルサイズの縮小やクエリ等のパフォーマンス向上にメリットがあるのでしょうか?(一対一の結合はあまり使用しないのが一般的なようですが、このような場合使用すべきでしょうか?)教えて頂きたくお願いいたします。

  • Access 指定項目のみの削除

    Accessのレコード削除についてです。 例えば商品テーブルに数値型のID(主キー)、テキスト型の商品名、テキスト型の産地の3カラム構成のテーブルがあったとします。 レコード削除の場合、Excelでいうと行削除のように該当IDの行に含まれる情報をすべて削除すると思うのですが、 これを例えばID番号は残し、商品名と産地のみ削除する…のは可能なのでしょうか。 ちなみに削除を行うのはテーブル上ではなく、新規レコード追加・編集ができる入力用のフォームからボタン操作で行いたいです。 また、サブとしてテーブルとソースを連結させた一覧表示できるフォームにも反映させたいです。→現状は規定値の0が表示されるため、データがなくなった場合0ではなく新規作成時に振られるID番号と同じ1 を表示させたいのですが、なかなかうまくいかず… ぜひご教示ください。

  • access フォーム間で情報が引き継がれない

    初心者です、よろしくお願いします。 仕様環境 WinXP Access2002 請求管理のシステムを作っています。 テーブルには 顧客マスタ(主キーは顧客番号でテキスト型 例:0001等) 請求マスタ(主キーは請求番号でテキスト型 例:A0001等) 明細マスタ(主キーは明細番号でオートナンバー ダミーみたいな感じで使っています。) そしてリレーションシップで顧客マスタ(1)→(多)請求マスタ(1)→(多)明細マスタになっています。 顧客マスタを元にしたフォーム(顧客入力フォーム)に顧客情報を入れて、 「請求書作成ボタン」を作り、そのボタンを押すと別のフォーム(請求書作成フォーム)に 飛ぶようにしているのですが、その際に顧客入力フォームに入力した情報を 引っ張っていくようにしたいのですが、うまくいきません。 ちなみに顧客マスタと請求マスタのリレーションは”顧客番号”でつなげています。 請求書作成フォームは請求書作成クエリから成り、 その中で顧客番号(テーブル:顧客マスタ)の抽出条件に[Forms]![顧客入力フォーム]![顧客番号]と 入れて”顧客番号つながり”で飛ぶようにしているのですが、 請求書作成フォームは開くのですけど、項目はすべて空白です。 またいろいろレコードを追加している内に、請求番号が既にあるものに対しては顧客情報も引き継がれることが判明しました。 構文が間違っているのでしょうか? 混乱しています、お助けください。

専門家に質問してみよう