Accessのコンボボックスを使ったデータ入力で不具合が発生|解決方法とは?

このQ&Aのポイント
  • Access初心者の方がコンボボックスを使ったデータ入力で不具合が生じた場合の対策方法を解説します。
  • データベースを使用して料理のレシピを入力するために、レコードソースが指定された帳票フォームを作成しました。しかし、入力を行うたびにデータが重複して追加される現象が発生しました。
  • この問題の原因と対策方法について詳しく説明します。
回答を見る
  • ベストアンサー

Accessのコンボボックスを使ったデータ入力

Accessは初心者です。宜しくお願いします。 コンボボックスを使ったデータ入力で不具合が生じました。 以下のデーターベースを使用します。 ①テーブル:T_食品   フィールド:食品コード、分類コード、食品名 ②テーブル:T_食品分類  フィールド:分類コード、分類名 ③テーブル:T_材料  フィールド:コード、食品コード、分量 ④クエリ:Q_材料入力用  フィールド:コード(T_材料)、食品コード(T_材料)、分類コード[T_食品]、食品名(T_食品)、分量(T_材料) ※食品コード、分類コードはリレーションシップしてあります。 料理のレシピを入力するために、レコードソースがQ_材料入力用の”材料入力”の帳票フォームを作成しました。 理想としては、食品分類の”分類名”をコンボボックスで選択後、該当する食品の”食品名”をコンボボックスで選択します。そして”分量”を入力する形でした。 ”分類名”のコンボボックスは、T_食品分類をコントロールソースで設定を行い、[更新後処理]は以下の通りにしました。 Me!食品名.Requery ”食品名”のコンボボックスは、T_食品をコントロールソースして、以下の値集合ソースにしました。 SELECT T_食品.食品名, T_食品.分類名 FROM T_食品 WHERE (((T_食品.分類コード)=[Forms]![材料入力]![分類名])); 以上の設定でコンボボックスは成功しましたが、入力を行うたびに、T_食品内に入力した食品のデータが追加される現象が出ました。 何が原因だったのか、対策方法をご教授お願いします。

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

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

補足ありがとうございます。これで話が続けられます。  添付図をご覧ください。 ・🔑マークのあるのが主キー ・T_食品に材料コードと分量を追加 ・T_材料より食品コードと分量を除去 >2.全て”いいえ”になっています。 ・分類名、材料名、食品名全てのインデックスを「重複なし」 ------------------------------------------------------- クエリは 単独での作成ほか  ・テーブルデザインのルックアップ  ・フォームデザインのクエリビルダー  ・レポートデザインのクエリビルダー  で作成できるので単独での作成はしない

matsume_02
質問者

お礼

返信遅くなりましたが、ありがとうございます。

その他の回答 (2)

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

今晩は、再度補足願います 1.T_食品、T_食品分類、T_材料のそれぞれの主キーはどれですか >主キーは以下の通りです。   T_食品:食品コード   T_食品分類:分類コード   T_材料:コード ★ これ等のコードはどのような基準で採番していますか 2.T_食品、T_食品分類、T_材料の食品、分類名は  インデックスプロパティーで重複なしに定義されていますか >全て”いいえ”になっています。 ★”いいえ”は規定値で重複も許可するで不都合の種になります 3.各テーブルIDなるフィールドは残っていますか >各テーブルの主キーとなっているフィールドがIDとしています。 ★1.の補足も主キーですね、主キー印の🔑はどちらについていますか 4.T_食品、T_食品分類コードでよろしいですか >添付画像より、3の通り”食品コード”がIDになっています。  ”分類コード”は、数値型でT_食品分類の”分類コード”とリレーションシップで一対多になっています。 5.T_食品とT_材料はどのように解釈しますか >名前が紛らわしくて申し訳ございませんでした。  T_食品について、例えば卵や牛乳、砂糖などの原料を入力するでテーブルです。  T_材料は、料理の”材料”であります。  T_食品からのデータを選択し、分量を入力するテーブルです。 ★申し訳ありません。  レシピはどのように解釈しますか?例えば牛丼はどちらに属しますか、分量の単位は存在しますか  

matsume_02
質問者

お礼

誤って質問を締め切ってしまった為、再度質問させていただきます。

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

>補足願います  テーブルのデザインで気になる事がございます。 1.T_食品、T_食品分類、T_材料のそれぞれの主キーはどれですか 2..T_食品、T_食品分類、T_材料の食品、分類名は  インデックスプロパティーで重複なしに定義されていますか 3.各テーブルIDなるフィールドは残っていますか 4.T_食品、T_食品分類コードでよろしいですか 5.T_食品とT_材料はどのように解釈しますか

matsume_02
質問者

補足

捕捉します。 1.主キーは以下の通りです。 T_食品:食品コード、T_食品分類:分類コード、T_材料:コード 2.全て”いいえ”になっています。 3.各テーブルの主キーとなっているフィールドがIDとしています。 T_食品:食品コード→オートナンバー型 T_食品分類:分類コード→数値型 T_材料:コード→オートナンバー型 4.添付画像より、3の通り”食品コード”がIDになっています。”分類コード”は、数値型でT_食品分類の”分類コード”とリレーションシップで一対多になっています。 5.名前が紛らわしくて申し訳ございませんでした。T_食品について、例えば卵や牛乳、砂糖などの原料を入力するでテーブルです。 T_材料は、料理の”材料”であります。T_食品からのデータを選択し、分量を入力するテーブルです。

関連するQ&A

  • Accessのコンボボックスを使ったデータ入力

    誤って質問締め切ってしまいましたので、再度内容を修正の上質問させていただきます。 Accessにおいて、コンボボックスを使ったデータ入力で不具合が生じました。 以下のデーターベースを使用します。 ①テーブル:T_材料   フィールド:材料コード、材料分類コード、名称(材料名) ②テーブル:T_材料分類  フィールド:材料分類コード、分類名 ③テーブル:T_レシピ内容  フィールド:ID、料理コード、材料コード、分量 ④テーブル:T_料理  フィールド:料理コード、名称(料理名) ⑤クエリ:Q_レシピ入力用 SELECT T_レシピ内容.ID, T_レシピ内容.料理コード, T_材料.材料分類コード, T_レシピ内容.材料コード, T_材料.名称, T_レシピ内容.分量 FROM T_材料 INNER JOIN T_レシピ内容 ON T_材料.[材料コード] = T_レシピ内容.[材料コード] ORDER BY T_レシピ内容.料理コード, T_レシピ内容.分量; メインフォームにT_料理にして、レシピを入力するためにQ_レシピ入力用のサブフォームを作成しました。 材料分類の”材料分類名”をコンボボックスで選択後、該当する材料の”名称”をコンボボックスで選択し”分量”を入力する形式にしたいです。 ”材料分類”のコンボボックスは、T_材料分類、材料分類コードをコントロールソースで設定、材料名を表示しています。[更新後処理]は以下の通りにしました。 Me!名称.Requery ”名称”のコンボボックスは、T_材料をコントロールソースして、以下の値集合ソースにしました。 SELECT T_材料.名称, T_材料.材料分類コード FROM T_材料 WHERE (((T_材料.材料分類コード)=[Forms]![F_レシピ登録M]![F_レシピ登録S]![材料分類])); 以上の設定でコンボボックスは成功しましたが、入力を行うたびに、T_材料内に入力した食品のデータが追加される現象が出ました。 長文で恐縮ですが、 何が原因だったのか、対策方法をご教授お願いします。

  • ACCESS2000 コンボボックス

    こんにちわ。 コンボボックスを教えて下さい。 テーブル T_分類(1) ・分類(1)  オートNo ・分類(1)名 テキスト テーブル T_分類(2) ・分類(2)  オートNo ・分類(1)  数値 ・分類(2)名 テキスト 2つのテーブルを作成して、フォームも作成しております。 入力する時、分類(1)も(2)テキストボックスで選ぶようにしています。 それで、分類(1)を選ぶと、分類(2)のテキストボックスに分類(1)の分しか表示しないようにしたいのですが・・。 どのようにすればよいでしょうか? 初心者な者で、分かりやすく教えていただければ有りがたいです。

  • ACCESS2000 コンボボックスによるデータ入力

    2つのテーブルがあります。 1つのテーブルは、顧客テーブルとし「氏名」「住所」「TEL」「担当者」とします。 もう1つは、担当者テーブルとし「ID」「担当者」 フォームで、 1つめの「担当者」のところをコンボボックスにしました。 プロパティは、 コントロールソース→担当者 値集合タイプ→テーブル/クエリ 値集合ソース→担当者テーブル としました。 顧客テーブルの「担当者」フィールドは、担当者テーブルから取得したいの です。 しかし、フォームで開きコンボボックスで値を変えようとしますが、 データが固定していて顧客テーブルに入力されません。 ほかのボックスは入力OKです。 リレーションは、担当者フィールド同士で設定してもしなくても 入力は可になりません。 状況がつかみづらいですが、わかる方教えてください。

  • Accessコンボボックスについて(初心者)

    例えば以下のような2フィールドのテーブルがあり 商品コード 商品名 1111  パソコン   ・     ・   ・     ・ フォームでひとつのコンボボックスを作る際このテーブルを参照し、2フィールドとも表示され、なおかつ入力出来るようにしたいのですが・・。 表示はするものの入力となると商品コードのフィールドのデータしか入力出来ません。 要は商品コードを入力すれば同じレコードの商品名が入力出来るようになれば良いので、別のやり方があればかまわないのですが・・。 良きアドバイスをお願いします。

  • accessのコンボボックスのことで質問です。

    accessを勉強しているのですが、ちょっとしたことで分からなくなってしまいました・・。 質問の内容なのですが、まずフォーム上にコンボボックスAとコンボボックスBを配置するとします。 レコードソースには仮に[情報テーブル]というテーブルが選択されているとします。 コンボボックスAには[情報テーブル]のフィールド名が、 例えば[顧客NO]、[商品]、[値段]というフィールド名が入っているとし、フィールドにはそれぞれ10件ずつデータが入力されています。 そしてコンボボックスAで[顧客NO]を選択するとコンボボックスBに[顧客NO]の10件のデータが挿入され、選択できるようにしたいのです。 他のフィールド名を選んだときにも同じようにコンボボックスBにフィールドのデータが入るようにしたいと思っています。 コンボボックスAにテーブル名を入れることはできたのですが、 コンボボックスAで選択されたフィールドのデータを、コンボボックスBで選択できるようにするというやり方がわからないのです・・。 accessは2002を使っています。 よろしくお願いします。

  • コンボボックスでデータ入力

    Access 2000 フォームにコンボボックスとテキストボックスを配置しています。 コンボボックスには種別[A][B][C]を選択できるようにし、 テキストボックスには納期日の「年」「月」「日」の3つのテキストボックスを 配置しました。 「種別」「納期日」を入力後、実行ボタンをクリックすると テーブル「T_商品」の種別フィールド、納期日フィールドに NULL値のフィールドに一括でデータを入力したいと考えております。 どのようにすればいいのでしょうかよろしくお願いします。

  • コンボボックスを使った入力の改善

    コンボボックスを使った入力を全てのデータベースで利用しています。しかし、各コンボボックスがそれぞれ独立「単体動作」しているので、コンボボックスの初段目「最初」はレコード数が少ないのですが、2段目3段目になると選択候補が累積表示されるので、候補の数も多くなり使いづらさを感じるデータベースも増えました。この状況を改善したいと思っていますので、宜しくお願いします。尚、データベースで設定しているコンボボックス全てに言えることでもありますので、以下のケースを紹介させていただきますので、アドバイスをお願いしたいと思います。 [現状でのやり方] コンボボックス参照オブジェクトは以下の構成にて、コンボボックスは独立していて連動していません。なお、参照データの追加作業は別途作成したフォームを、データ入力フォームに配したコマンドボタンで開いて行っています。 [コンボボックス関連オブジェクト(例)] コンボボックス名:都道府県(値集合ソースで都道府県のみ選択) テーブル名:都道府県テーブル フィールド名:ID、都道府県 フォーム名(参照データ追加):都道府県追加フォーム ※「新規追加後の入力フォームへの即反映はアドバイスにより完結済」 コンボボックス名:市町村(値集合ソースで市町村のみ選択) テーブル名:市町村 フィールド名:ID、市町村 フォーム名(参照データ追加):市町村追加フォーム ※「新規追加後の入力フォームへの即反映はアドバイスにより完結済」 [改善させたいこと] コンボボックス「都道府県」で東京都を選択したとき、次のコンボボックス「市町村」では東京都の市町村だけが次の候補として表示させたいと思っています。又、現在は蓄積データの絞り込み検索で設定していますが、選択コンボボックスの次のコンボボックスを自動プルダウンさせ、候補も同時に表示させ入力できればと考えています。 以上ですが、宜しくお願いします。

  • ACCESS2013 コンボボックスの警告について

    (1)コンボボックスに一度値を入力及び選択をして確定する。 (2)再度(1)のコンボボックスの内容を削除して空欄の状態に戻す。 (3)他のフィールド等にカーソル等を移すと、(2)のコンボボックスに対して警告メッセージが出でしまう。 'xxxxトランザクション.xxxxカラム'フィールドに値を入力してください。 上記(3)の警告メッセージが出ないようにしたいのですが どのように対応すればよろしいでしょうか? ※フォームはxxxxトランザクションがデータソース(ダイナセット)になっています。 ※コンボボックスはxxxxマスタテーブルが値集合(テーブル/クエリ)となっています。

  • ACCESS97のコンボボックスについて

    入社して、名刺を貰う機会が多い為、名刺を管理するものを初歩的な参考書を見てACCESS97で作りたいと思います。テーブルで数名の氏名・会社名・部署名・役職・住所を作りました。良く分からなかったので、この1つのテーブルを基にパラメータを使って検索する「検索用画面」と新しいレコードが表示される「新規入力画面」をクエリーとフォームを別々に作りました。検索用画面は、これで良しとします。しかし、新規入力画面は、同会社名が多いので、コンボボックスを作り今まで登録したものからも選べる様にもしたいです。新しいレコードでは、表示されませんが、▼で前のレコード(既に入力してあるデータ)に戻ると、エラーメッセージで「このフィールドに入力した値が不正です。例えば、数値型のフィールドに文字列を入力しました。」と出てきてしまいます。コンボボックスいうのは、コンボボックスウィザードで「テーブルまたはクエリーを表示する」を選び、表示させたいものを選ぶだけでは、いけないのでしょうか・・。くだらない質問で申し訳ありませんが、回答の方宜しくお願いします。

  • accessデータ活用法

    編集方法で悩んでおります。 受注テーブル ID オートNo. 品名 テキスト 数量 数値 品名テーブル ID オートNo. 品名 テキスト とあるとします。 テーブル同士は、リレーションはされておらず、 受注フォームのリストボックスのコントロールソースに品名テーブルが参照されています。 今回、品名を分類コードで仕訳したいのですが... せっかく品名が入力されているのでそれを引用したいです。 そこで、 (1)新たに分類テーブルを作成し組込む (2)品名テーブルの行を増やし、分類コードのフィールド追加 (3)品名を置換えや条件分岐関数で分類コードに変換 ちなみに、品名/分類は10種類以内です。 (1)(2)はいろいろ試しましたが、受注テーブルの既存データのクエリ結果が得られません。 そもそも、考えが間違ってるでしょうか??? 宜しくお願いします。

専門家に質問してみよう