Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


368 / 9994 ←次へ | 前へ→

【12939】Re:あるテーブルに入力された数字を他クエリに
回答  かるびの  - 16/2/5(金) 20:03 -

引用なし
パスワード
    クエリ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 フォームを閉じるときに、元のテーブルにワークテーブルからレコードを戻します。
 戻し方にはいろいろありますが、最も単純なのは、
ワークテーブルに読み込んだレコードを元テーブルから全て削除し、
ワークテーブルから元テーブルに、ワークテーブルの全レコードを追加するという手法です。

 ワークテーブルは、比較的よく使われる手法ですが、
レコードの削除と追加を繰り返すため、ファイル破損の可能性が少し高まるとも言われており、
他の方法(メイン/サブのフォームなど)が使えるなら、避けたいところです。


 テーブル作成クエリは論外です。
 テーブルそのものの新規作成や削除を繰り返すと、ファイル破損の可能性が飛躍的に高まるため、
この方法はほとんど禁じ手です。

126 hits

【12937】あるテーブルに入力された数字を他クエリに まるこ 16/2/5(金) 14:11 質問[未読]
【12938】Re:あるテーブルに入力された数字を他クエ... まるこ 16/2/5(金) 17:56 発言[未読]
【12939】Re:あるテーブルに入力された数字を他クエ... かるびの 16/2/5(金) 20:03 回答[未読]
【12945】Re:あるテーブルに入力された数字を他クエ... まるこ 16/2/18(木) 16:52 お礼[未読]

368 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078188
(SS)C-BOARD v3.8 is Free