• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access フォームの作成 レコードの追加について)

Accessフォームの作成とレコード追加について

このQ&Aのポイント
  • Accessフォームの作成とレコード追加について、入力に手間が掛かる問題に対して、良案を求めています。
  • 現在のフォームでは、売上構成や3品目のデータが入力しにくく見にくいです。企業コードを指定してクリックすることで、自動的にレコードを追加する機能を作成したいと考えています。
  • VBAなどのプログラミングに関する知識がないため、どのように実現すればいいのか分からない状況です。助言をいただけると幸いです。

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

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

なんか要領を得ないですね あなたの挙げた例ではあやふやなところがあって回答しにくいので こちらで作成した例で回答しておきますから応用してください 生徒の成績入力を行うメイン・サブフォームの例です メインフォームに設けた入力開始というボタンを押すと サブフォームには科目と生徒名が入力済みで点数だけが空欄のレコードが 生徒数×科目数分追加され表示されます テーブル [生徒マスタ](生徒コード*、氏名、性別、生年月日、・・・) [科目マスタ](科目コード*、科目名、・・・) [成績](生徒コード*、科目コード*、点数) *は主キー フォーム 科目マスタから作った単票フォームに成績テーブルから作ったサブフォームを 科目コードでリンクしてはめ込む メインフォームにボタンをおきクリック時イベントで下のクエリを走らせるようにします 追加クエリ 生徒マスタと科目マスタをクエリデザインビューに取り込み 結合しないで生徒コードと科目コードを取り出します このクエリをクエリの種類で追加クエリに変えます 追加先は成績テーブルです

sskj
質問者

補足

ありがとうございます。 追加クエリを通常通り使用すればよいだけでしたね・・・ 一つ問題があるのですが、追加ボタンを押した後に別のレコードに 移動しないと、データを追加したサブフォームの表示が反映されません。これは何か方法があるのでしょうか? それと気になることがあるのですが、上記の例題と異なり、生徒マスタをメインフォーム(単票フォーム)としている状態なのです。 そのため、追加クエリを実行するときにパラメータクエリで追加したい生徒コードを入力するように作成しました。 フォーム上で表示している生徒コードと同じ生徒コードを追加するにはVBAでの指定になるのでしょうか?

その他の回答 (2)

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

>別のレコードに移動しないと、データを追加したサブフォームの表示が反映されません。 追加クエリを走らせた後でサブフォームを再クエリしてください >生徒マスタをメインフォーム(単票フォーム)としている状態なのです。 全く同じことです メインが生徒マスタなら生徒ごとに各科目を順に入力 科目がメインなら科目ごとに生徒に順に入力していくことになるだけです >生徒コードを入力するように作成しました。 まだ理解されていないみたいですね 生徒と科目の全組み合わせを作るには、生徒マスタと科目マスタの2つのテーブルが必要です >フォーム上で表示している生徒コードと同じ生徒コードを追加するには >VBAでの指定になるのでしょうか? 生徒一人分でいいいの? 要望は「全生徒 × 全科目」分のレコードを一発で追加することでしょ 一度私の上げたサンプルを作ってみたら、どういう仕組みか理解できると思いますよ その上でそちらのテーブル構成をもっとちゃんとしたものに作りかえることですね

sskj
質問者

補足

>追加クエリを走らせた後でサブフォームを再クエリしてください ありがとうございます。 >要望は「全生徒 × 全科目」分のレコードを一発で追加することでしょ そうではありません。 一人の生徒×全科目が目的です。 そのためパラメータクエリで「生徒コードを入力するように作成しました」となるわけです。 要するに一人の生徒に対して全科目のデータを持たせたいので(このID入力作業に手間が掛かるため)追加ボタンが欲しかった訳です。

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

>企業コードを指定してクリックすると売上構成に1~15までの商品レコード追加。 15商品のテーブルがあればできそうですね >一つの企業コードに対して最大15商品、それらに対して3品目は決まっているので 企業ごとに扱う商品が異なるのであれば、必要なテーブルはその情報を持ったテーブルです (同じならその15品目のテーブル) 売り上げ構成というのはどういうものですか? >企業コードを指定してクリックすると3品目項目IDを追加。 どこへ追加? どこへ何を追加したいかということさえはっきりすれば追加クエリで簡単に出来そうですね >入力の並びに関しては以前ご質問したときにVBAで長いコードを >書かなければならないと解答をいただきました。 データベースのレコードに入力順は関係ありません VBAを使ったとしてもテーブル上のレコードの順序は指定できません 何か勘違いしているのでは

sskj
質問者

補足

ありがとうございます。 >15商品のテーブルがあればできそうですね 商品テーブルはすでに作成済みです。 どの企業も同じ15品目を使います。 >売り上げ構成比 売上に対してどのぐらい商品構成比率があるかです。 たとえば野球売上構成比50なら野球商品の売上が50%あると言う事になります。 さらにその中で野球ウエアの構成比、野球シューズの構成比、野球グッズの構成比となります。ですのでこの野球ウエア、野球シューズ、野球グッズを足して数値が100%になります。さらにいえば商品の売上構成のみを足しても100%になります。売上構成とは商品の売上構成比のことです。(野球、ゴルフ、テニス等) >何か勘違いしているのでは 私が言いたかったのは、 野球ソフト_テニス_バドミントン_卓球_ゴルフ (ここに売上構成比を入力) このように商品項目横にもち入力するにはVBAを使わないと出来ないのではないかということです。 今の状況では新規データの場合、まず新規レコード追加ボタンを押し その後、企業コード入力、住所入力、電話番号入力と順番に入力していきます。 そこではいいのですが、サブフォームの売上構成テーブルの入力で、わざわざ商品IDを1~15まで入力しなければなりません。 それに手間が掛かるので、売上構成テーブルに1~15のIDを入力してくれるボタンを作れないかということです。(現在入力中の企業コードデータに) 要するに一つの企業コードに対して必ず商品15品目のレコードデータがあるようにしたいわけです。 それと同様に一つの商品項目に対してウエア、シューズ、グッズの3品のレコードデータがあるようにしたいわけです。   野球   / │ \ ウエア_シューズ_グッズ