|
クエリ1ですが、一対多のテーブルから成るクエリだと思います。
つまり、一側テーブルは、その名前が例えばT請求書、フィールドがID、注文日、支払予定日、
多側テーブルは、その名前が例えばT請求明細、フィールドが明細ID、ID、金額、備考
となっているはずです。
これは、好みの問題ではなく、蓄えるデータの性質上、理論に見て、
よほど特殊な事情がない限り、
こういうテーブル構成になるはずだというレベルのものです。
次に、クエリから入力しているとのことですが、感心しません。
データベースでは、レコードの入力はフォームで行うものです。
テーブルやクエリを開いてそこに入力するということは、
むしろやってはいけないことと言っても過言ではありません(テストのときだけは別)。
エクセルでは、データの格納も、データの計算も、データの入力・訂正も、データの表示も、
データの印刷も全てワークシートで行いますが、
アクセスの場合は、それぞれ異なったオブジェクトで行います。
データの格納はテーブル、データの計算はクエリ、データの入力・訂正・表示はフォーム、
データの印刷はレポートで行います。
確かに、テーブルやクエリでレコードの入力をすることもできますが、
元々が入力のためのオブジェクトではないので、人間にとって使いやすい入力の仕方は望めません。
一対多のテーブルへデータを格納する場合、
メイン/サブの形式のフォームを使って常道です。
つまり、メインフォームに、上例でいえばT請求書のレコードを表示させ、
サブフォームに、上例におけるT請求明細のレコードを表示させます。
この場合、サブフォームには、メインフォームに表示されたレコードと紐付けられたレコードだけを
表示するようにするのが一般です。
どうしても、
>ID|注文日 |支払予定日 |請求書番号|金額|備考
>1|2016/1/4 |2016/2/29 |AZP00001 |4800|あああああ
>2|2016/1/15 |2016/3/31 |AZP00002 |2900|えええ
>3|2016/2/1 |2016/3/31 |AZP00003 |4260|かかかか
という形で入力したいというならば、ワークテーブルを使います。
ワークテーブルというのは、一時的にデータを保管するためのテーブルのことです。
通常、フォームを開くときに、
1 ワークテーブルの初期化としてワークテーブルの全レコードを削除し、
2 追加クエリによりテーブルからワークテーブルにレコードを読み込み、
3 ワークテーブルをレコードソースとするフォーム上でレコードを入力・訂正し、
4 フォームを閉じるときに、元のテーブルにワークテーブルからレコードを戻します。
戻し方にはいろいろありますが、最も単純なのは、
ワークテーブルに読み込んだレコードを元テーブルから全て削除し、
ワークテーブルから元テーブルに、ワークテーブルの全レコードを追加するという手法です。
ワークテーブルは、比較的よく使われる手法ですが、
レコードの削除と追加を繰り返すため、ファイル破損の可能性が少し高まるとも言われており、
他の方法(メイン/サブのフォームなど)が使えるなら、避けたいところです。
テーブル作成クエリは論外です。
テーブルそのものの新規作成や削除を繰り返すと、ファイル破損の可能性が飛躍的に高まるため、
この方法はほとんど禁じ手です。
|
|