![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Accessで注文台帳を独学で作っているものです。
マクロは少々、VBAは全く判らないレベルです。
実は、1枚の注文書で2つの発注まで記載できる書式になっているため、注文書No 00001に対し、連番で01と02に分けて入力しています。
以下の様に、フォームで連番01の内容を入力してレコード1、次に連番02の内容を入力してレコード2という感じです。
注文書No 連番 発注者 品名 部署 金額
レコード1 00001 01 Aさん タコ B課 100円
レコード2 00001 02 Aさん コマ B課 200円
この時に一つの注文書なので当然、発注者と部署は連番01も02も同じになるのですが、全て入力しなければなりません。
重複フィールドは発注者、部署以外にも多くあるので、手間が掛かります。
そこで相談なのですが、重複フィールドを自働でコピーする方法はあるでしょうか?
連番02と入力した場合に、同じ注文書No00001の連番01のレコードデータから、自働で連番02の重複フィールドにコピー入力したいです。
現在は、自分だけが入力しているので我慢しているのですが、将来的に他の人も入力する可能性があり、その時、クレームが出ると思うので今の内に解決しておきたいと思っています。
もしVBA、マクロが必須であれば、全く判らないレベルですので記述も教えて頂ければ助かります。
大変申し訳ありませんが、お願いいたします。
No.1ベストアンサー
- 回答日時:
作っている物が、Excelのようなシートで運用するような感覚で作られています
Accessのようなデータベースは基本的にデータは重複して入力しないようにして作成します
現在のテーブルは 主キーになる番号が入るフィールド・注文書No・連番・発注者・品名・部署・金額の8つのフィールド又は、最初の主キーになる部分が無い7つのフィールドからなる1つのテーブルで行おうとしていませんか?
jyurymicke さんのようなケースならば、
部署用のテーブル
発注者用のテーブル
注文書用のテーブル
商品用のテーブル
注文レコード用のテーブル
のように複数のテーブルを作成し、その入力されたテーブルを連携させながらデータベースを作成してゆきます
よって、重複してデータ入力しなければいけないようなデータベースは設計自体がダメです
注文書テーブルを元にしたフォームを作成し、そこに注文書Noが入る場所を設けます
注文用レコード用テーブルを元にもうひとつフォームを作成し、先に作成した注文書用のフォームの中に配置(サブフォームという)して、お互いのデータが連携して動作するようにリレーションを貼ります
こういった連携をする事で、注文用レコードに入力されたデータは何番の注文書のデータなのかが自動で入るので、いちいちレコード1の注文書Noを入力する必要が無くなります
同じように商品コードを入力すると、自動で商品名と価格が入力させるようにするなど
まずは、リレーションシップの方法から勉強すると良いでしょう
もう一度データベースの設計から見直しした方が良いです
この回答への補足
一般人 様
サブフォームも理解しておらず、ただ単にフィールドを並べて作ってしまいました。
このため実は主キーも注文書Noでは無く、通しNo(オートNO)でやるしかなくなった状態です。
メインフォームで注文書Noと重複するフィールド(発注者、部署)を入力するようにし、サブフォームで連番と重複しないフィールド(品名、金額)を入力するようにすると言う考えで良いでしょうか?
これから勉強して修正したいと思いますが、すでに相当量のデータが入力されています。
最も確実に最短で修正する方法は、何かありますでしょうか?
クエリも何個か作っていますが、全て修正ということになりますよね。
No.2
- 回答日時:
>このため実は主キーも注文書Noでは無く、通しNo(オートNO)でやるしかなくなった状態です
そうでしょうね jyurymickeさんのやり方では、注文書を主キーに出来ません
注文書Noを主キーにしてメインフォームに配置し、サブフォームにメインフォームの注文書Noとリレーションシップ取るように設計すれば良かった訳です
>すでに相当量のデータが入力されています。
既に入っているテーブルの設計を変更する事も出来ますし、クエリを作成し現在あるテーブルから新規に必用なデータを抽出し、それを元に新規のテーブルを作成する事も可能です
せっかく沢山のデータを入れたデータベースがあるならばそれそのまま利用すれば良いです
色々やってデータ壊すのが心配ならば、***.mdb のファイルをコピーしてコピーした方のデータベース色々いじり倒せば良いと思いますよ
この回答への補足
そうですね。
色々いじってみたいと思います。
クエリの方は、メインテーブルの注文書Noに、サブテーブルの注文書No(重複しないサブデータ(連番、品名、金額))をリレーションシップでつなげてみたいと思います。
今ある入力フォーム(全てのフィールド分をテキストで作っています)ですが、重複しないテキストだけを選んで、プロパティ等でサブフォーム化することなんて出来ませんよね?
(サブフォームの仕方、これから勉強するので、的外れかな質問かもしれませんが)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- 財務・会計・経理 業者間での注文書・請書の取り扱いについて 2 2022/06/27 15:53
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) Excel VBA 同じ名前のフォルダがあれば作成したブックを格納するマクロをつくりたい 2 2023/01/16 16:19
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- その他(データベース) accessについて 2 2022/05/31 16:58
- 確定申告 確定申告について 4 2023/02/14 11:37
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Amazon アマゾン 7 2022/06/11 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでデータを更新したらそ...
-
前のレコードの値を自動で入れたい
-
入力した値をコンボボックスに...
-
Accessフォームが入力できません。
-
Accessのフォームでデータ入力...
-
インデックスまたは主キーにはn...
-
Access2010 レコードの更新日付...
-
Accessで、最後(更新)にエラ...
-
Accessで、オートナンバー型を...
-
AccessVBAの値によっ...
-
ACCESSで定型入力の〒が表示さ...
-
Accessでフォームに自動入力し...
-
「バリアント型でない変数に Nu...
-
DELPHIでSQLテーブルを読み込み...
-
Dlookupで結果が表示されたりさ...
-
Access フォームで重複データ...
-
access別のテーブルを参照して...
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
-
ACCESS 複数のフォームから同一...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
前のレコードの値を自動で入れたい
-
Accessでデータを更新したらそ...
-
access別のテーブルを参照して...
-
インデックスまたは主キーにはn...
-
Accessフォームが入力できません。
-
ACCESS フォームで入力データ...
-
access ダブリ登録を防止したい
-
ACCESSでフォームのチェックボ...
-
AccessVBAの値によっ...
-
アクセスでコードを入れると名...
-
入力した値をコンボボックスに...
-
テキスト型のフィールドでハイ...
-
「バリアント型でない変数に Nu...
-
Accessでフォームに自動入力し...
-
ACCESS2000の帳票フォームでテ...
-
accessでオプションボタンを使...
-
Accessで時間外管理の作成について
-
Access 自動入力の解除方法
-
Accessで、最後(更新)にエラ...
-
アクセスでの登録ボタンでの処...
おすすめ情報