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

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

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

原稿が以下のようになっている、フォームを作成したのですが 入力に手間が掛かるので良案がありましたらお願いいたします。 企業コードxxxx 店名_xxx店 住所_xxxx市xxx村 商品分類_売上構成_ウエア_シューズ_グッズ 野球ソフト_(野球ソフトの構成数値)_(野球ソフトのウエアの構成数値)_・・・ テニス_ バドミントン_ 卓球_ ゴルフ_ ・ ・ ・ 合計_ 分類ID(商品名)は15商品と決まっております 3品目もウエア、シューズ、グッズと決まっております。 原稿は商品名15品目がすべて印字済みです。 エクセルの表のような原稿だと考えていただければよいかと思います。 テーブルは正規化に則り以下のように作成しました。 売上構成テーブル 企業コード_売上構成_分類ID(商品名のID) 3品目(ウエア、シューズ、グッズ) 企業コード_3品目構成比_分類ID_項目ID(3品目のID) 店マスタテーブル 企業コード_店名_電話番号 等 現在は店マスタテーブルをメインフォームにサブフォームを 売上構成、3品目と作成しましたがこのままでは見にくいですし IDをわざわざ入力しなければなりません。(新規のデータの場合) メインフォーム(単票フォーム) サブフォーム(データシート) 一つの企業コードに対して最大15商品、それらに対して3品目は決まっているので ID入力を省くように追加ボタンの作成は出来ないのでしょうか? 企業コードを指定してクリックすると売上構成に1~15までの商品レコード追加。 企業コードを指定してクリックすると3品目項目IDを追加。 入力の並びに関しては以前ご質問したときにVBAで長いコードを 書かなければならないと解答をいただきました。 VBAは殆どさわった事ないので分かりません。(検索に使っている程度です。) 以上のことでもし何かありましたら回答お願いいたします。

  • sskj
  • お礼率24% (75/303)

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

  • ベストアンサー
  • 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品のレコードデータがあるようにしたいわけです。   野球   / │ \ ウエア_シューズ_グッズ

関連するQ&A

  • ACCESS フォームの作成について

    企業コード(重複しない)売上構成比(abc商品)、項目構成比(a)、項目構成比(b),項目構成比(c) と項目がある場合、私の作成したデータベースでは 売上構成比テーブル 企業コード_売上構成比_種別ID 3項目テーブル 企業コード_3品目項目ID_種別ID_項目構成比_種別名 としています。 売上構成比と言うのは売上の種類別の比率です。(15種類) さらにその種類の項目別の比率が3項目あります。 同じ企業コードで同じ種別IDの項目構成比を足せば100%になります。 同じ企業コードで売上構成比を足せば100%になります。 企業コードは店舗のデータがあるので(店名、住所等)そちらの主キーになります。 要約すると、店別の構成比ということです。 ここで問題になるのが、入力フォームを作成するさいに、 売上構成比(abc商品例ゴルフ)、項目構成比(a項目)、項目構成比(b項目),項目構成比(c項目) のように作成しないとミスを気づかない場合があります。 ですので項目IDごとにクエリを作成し (項目a 項目b 項目c)それらのクエリを企業コード、種別IDで結び、 これをサブフォームとして作成したのですが、次のレコードに進むときに処理に時間がかかります。5秒程度 サブフォームの総レコード数が23万件弱あるため仕方がないのですが、どうにかならないでしょうか? //upload.jpn.ph/upload/upload.php?id=30628 分類名=種類名 例:3品目テーブル 企業コード 種別ID 項目ID 項目構成 3 1 1 0 3 1 2 0 3 1 3 0 3 2 1 0 3 2 2 0 3 2 3 0 3 3 1 0 3 3 2 0 3 3 3 0 3 4 1 0 3 4 2 0 3 4 3 0 3 5 1 0 3 5 2 0 3 5 3 0 3 6 1 0 3 6 2 0 3 6 3 0 3 7 1 0 3 7 2 0 3 7 3 0 3 8 1 0 3 8 2 0 3 8 3 0 3 9 1 10 3 9 2 5 3 9 3 85 3 10 1 0 3 10 2 0 3 10 3 0 3 11 1 0 3 11 2 0 3 11 3 0 3 12 1 0 3 12 2 0 3 12 3 0 3 13 1 0 3 13 2 0 3 13 3 0 3 14 1 0 3 14 2 0 3 14 3 0 3 15 1 0 3 15 2 0 3 15 3 0

  • Access 分類分け クエリの作成方法について

    商品分類項目に野球 テニス サッカー等の項目が15以上あります。 その各項目にウエア シューズ グッズ 構成比率とあります。 テーブルを作成するときに構成比率 ウエア シューズ グッズ 分類IDとフィールドを作成し、項目事に分類IDを振り分けました。 野球販売高を算出するには売上高*野球構成比/100*0.5と計算します。 クエリでこれらを計算するには抽出条件で15項目のファイルを作成する必要がありますよね さらに計算する1項目につき1ファイル必要ですよね 算出するのは野球販売高だけではなく、テニス販売高、サッカー販売高 と項目事に必要です。 計算項目はこれ以外にも14あり、それらを上記の方法で算出するとファイル数が膨大になります。 Accessではクエリの数が数十個になるのは普通なのでしょうか?

  • ACCESS 同じデータの一括追加。

    商品テーブル:商品_売上_個別ID マスタテーブル_グループID_個別ID_住所・・・ 上記のような商品テーブルがあるのですが、同じグループIDのデータに 同じ商品_売上を入れるにはどのようにするのが一番良いでしょうか? フォームで非連結のボックスを作って、一通りの商品名、売上を入力 グループID入力用のボックスにグループID入力。実行 のようなものが作りたいのですが出来ないでしょうか?

  • ACCESS 入力フォーム 項目の並びについて

    テーブル1 コード_店名_項目_構成比 1_a_野球_10 1_a_テニス_20 1_a_ゴルフ_30 ・ ・ ・ テーブル2 コード_企業名 1_z このようなテーブルからフォームを作成中なのですが テーブル1、サブフォーム側の入力表示を原稿通りにしたのですが、 以下のように出来ないでしょうか? コード_店名_野球_テニス_ゴルフ

  • Access Dsum関数

    サブフォームのレコードセットの合計を求めメインフォームにボックスで表示したいのですが、Dsumの演算対象の条件の記述が間違っているらしくエラーがでます。 =DSum("前年度売上","Q_商品分類のサブフォーム","品目ID=" & [業態&調査商品]![Q_商品分類のサブフォーム]![品目ID]="1090") 品目IDの1090をどう指定してやるかが分かりません。

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

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

  • ACCESSで

    まず始めに。 私はAccess初心者なので、何をどう質問して良いかもはっきりは分かりません。何か、足りない部分があれば書いて下さい。 喫茶店の売り上げ集計(メニュー別&顧客別)等のシステムをAccess2002で作っています。 と言っても、まだ始めのほうで詰まってしまっての質問です。 商品テーブル、商品の中分類テーブル、大分類テーブル、売上伝票テーブル、明細テーブルと在り、商品登録クエリ&フォーム、売り上げ登録クエリ&フォーム、明細登録クエリ&フォームがあります。 売り上げ登録フォームは、売り上げ伝票としています。 明細登録フォームは売り上げ登録フォーム(メイン)のサブフォームとしてあります。 メインフォーム上に入力日、販売日、顧客名(IDからクエリで引いてきます。)等をテキストボックスやコンボボックスなどで入力します。 伝票IDはオートナンバー型で指定し、それをサブフォーム上のIDに代入して登録しています。 大分類で飲み物と食べ物を分け、中分類で、『ホット系・アイス系・生ジュース系・カレー系・・・・軽食系・ケーキ系』等と分かれており、カレー系から軽食系までは、大盛小盛が指定出来るのですが、これを明細フォームでチェックボックスで入力しています。 問題はここからで、帳票形式の明細フォームで入力しているのですが、大盛、小盛が指定出来ない物の行のチェックボックスの『visible』を「false」にし、大盛、小盛が指定出来る物の行のチェックボックスの『visible』は「true」にしたいと想い、VBAで組みました。が、レコードセットを使わないとメインフォーム中の全ての行のチェックボックスの『visible』が同時に変わってしまいます。 windowsXPのコントロールパネルのODBCの設定もおかしいかもしれませんがどうしても分かりません。 基本的な事なのかもしれませんが、よろしくお願いします。

  • Access2007 「レコードを追加できません」

    Access2007で困っております。 フォーム上からテキスト型のデータを入力しようとしても 「レコードを追加できません、テーブル’T_アルバム’の結合キーがレコードセットにありません。」 と表示されうまく入りません。 【テーブル構成】 ★が主キー (1)T_アルバム ★アルバムID テキスト型 アルバム名 テキスト型 ジャンルID テキスト型 ソースID テキスト型 アーティストID テキスト型 (2)T_曲目 ★曲ID テキスト型 曲名 テキスト型 トラックNo テキスト型 アルバムID テキスト型 (3)MT_アーティスト ★アーティストID テキスト型 アーティスト名 テキスト型 (4)MT_ジャンル ★ジャンルID テキスト型 ジャンル名 テキスト型 (5)MT_ソース ★ソースID テキスト型 ソース名 テキスト型 【リレーション】 ※いずれも参照整合性付き (1)T_アルバム アルバムID --- (2)T_曲目 アルバムID (1)T_アルバム アーティストID --- (3)MT_アーティスト アーティストID (1)T_アルバム ジャンルID --- (4)MT_ジャンル ジャンルID (1)T_アルバム ソースID --- (5)MT_ソース ソースID フォーム作成のために「Q_アルバム情報入力」をつくりました。 アルバムID T_アルバム アルバム名 T_アルバム アーティストID MT_アーティスト アーティスト名 MT_アーティスト ジャンルID MT_ジャンル ジャンル名 MT_ジャンル ソースID MT_ソース ソース名 MT_ソース この「Q_アルバム情報入力」を使って、フォームウィザードからフォームを作成し、 アルバムIDやアルバム名を入力しようとすると 「レコードを追加できません、テーブル’T_アルバム’の結合キーがレコードセットにありません。」 と表示されます。 他のフィールドは値が入力できますが、これら2つのフィールドのみ入力できません。 なお、各テーブルのフィールドには予めデータが入っている状態です。 宜しくお願い致します。

  • access2003 複数のフォームから入力したデータに通し番号を付けてストックしたい

    初心者の恥ずかしい質問かもしれないので申し訳ありませんが、自力で解決できないのでアドバイスをお願いします。 伝票入力画面を作っています。  ◆親)売上入力フォーム:売上管理番号/日付/取引先/売上合計金額 ◆子)売上明細フォーム:商品コード/商品名/単価/数量/明細金額 ◆売上入力テーブル:売上管理番号/取引先/日付 ◆売上明細テーブル:明細番号/売上管理番号/商品コード/数量/明細単価 伝票が数種類あるため、それぞれの伝票を画像として取り込んで複数の入力画面を作り、入力しやすくしようと思っています。 このとき、各フォームから入力したデータを、オートナンバーでひとつの売上入力/明細テーブルにストックしていくにはどうしたらよいでしょうか? よろしくお願いします。

  • Accessのフォームについて教えてください。

    こんばんは。アクセス入門者です。 入門書やできるシリーズなどいくつかのアクセスの本を見たのですが、 フォームについて、理解できません。 ●担当者マスタ ■客先マスタ ★コードマスタ ▲売り上げ計画マスタ ◎売上げ結果マスタ テーブルを作り、それぞれのテーブルから必要な項目を集めて、クエリを作成しました。思ったとおりの結果になったので、これを元にフォームを作成しました。 思ったとおりの結果が表示されるのですが、このフォームに入力が出来ません。できなかったので、次の方法を試しました。 ★コードマスタと▲売り上げ計画マスタのデータをサブフォームに配置しデータを追加させようと思って、あらたにフォームを作りました。やはり、思ったとおりの表示はされるのですが、追加ができないのです。それぞれのテーブルには、★コードマスタを主にそれぞれ、一対多にリレーションを組んでいます。 1つのフォームで色々なテーブルに結果を反映できるように、参照整合性の更新、削除にもチェックを入れました。 この考えは間違っているのでしょうか。 ○○マスタとあるように、それぞれ1つのテーブルに1つのフォームにしなければならないのでしょうか。 複数のテーブルから取り出したデータの更新は無理なのでしょうか。 ある程度、クエリまで完成したのにフォームでつまずいて苦しんでいます。ご解答宜しくお願い致します。

専門家に質問してみよう