電子書籍の厳選無料作品が豊富!

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、マクロが必須であれば、全く判らないレベルですので記述も教えて頂ければ助かります。
大変申し訳ありませんが、お願いいたします。

A 回答 (2件)

作っている物が、Excelのようなシートで運用するような感覚で作られています



Accessのようなデータベースは基本的にデータは重複して入力しないようにして作成します

現在のテーブルは 主キーになる番号が入るフィールド・注文書No・連番・発注者・品名・部署・金額の8つのフィールド又は、最初の主キーになる部分が無い7つのフィールドからなる1つのテーブルで行おうとしていませんか?

jyurymicke さんのようなケースならば、
部署用のテーブル
発注者用のテーブル
注文書用のテーブル
商品用のテーブル
注文レコード用のテーブル
のように複数のテーブルを作成し、その入力されたテーブルを連携させながらデータベースを作成してゆきます

よって、重複してデータ入力しなければいけないようなデータベースは設計自体がダメです

注文書テーブルを元にしたフォームを作成し、そこに注文書Noが入る場所を設けます
注文用レコード用テーブルを元にもうひとつフォームを作成し、先に作成した注文書用のフォームの中に配置(サブフォームという)して、お互いのデータが連携して動作するようにリレーションを貼ります

こういった連携をする事で、注文用レコードに入力されたデータは何番の注文書のデータなのかが自動で入るので、いちいちレコード1の注文書Noを入力する必要が無くなります

同じように商品コードを入力すると、自動で商品名と価格が入力させるようにするなど
まずは、リレーションシップの方法から勉強すると良いでしょう

もう一度データベースの設計から見直しした方が良いです

この回答への補足

一般人 様
サブフォームも理解しておらず、ただ単にフィールドを並べて作ってしまいました。
このため実は主キーも注文書Noでは無く、通しNo(オートNO)でやるしかなくなった状態です。
メインフォームで注文書Noと重複するフィールド(発注者、部署)を入力するようにし、サブフォームで連番と重複しないフィールド(品名、金額)を入力するようにすると言う考えで良いでしょうか?
これから勉強して修正したいと思いますが、すでに相当量のデータが入力されています。
最も確実に最短で修正する方法は、何かありますでしょうか?
クエリも何個か作っていますが、全て修正ということになりますよね。

補足日時:2010/04/17 17:42
    • good
    • 0

>このため実は主キーも注文書Noでは無く、通しNo(オートNO)でやるしかなくなった状態です



そうでしょうね jyurymickeさんのやり方では、注文書を主キーに出来ません

注文書Noを主キーにしてメインフォームに配置し、サブフォームにメインフォームの注文書Noとリレーションシップ取るように設計すれば良かった訳です

>すでに相当量のデータが入力されています。

既に入っているテーブルの設計を変更する事も出来ますし、クエリを作成し現在あるテーブルから新規に必用なデータを抽出し、それを元に新規のテーブルを作成する事も可能です

せっかく沢山のデータを入れたデータベースがあるならばそれそのまま利用すれば良いです

色々やってデータ壊すのが心配ならば、***.mdb のファイルをコピーしてコピーした方のデータベース色々いじり倒せば良いと思いますよ

この回答への補足

そうですね。
色々いじってみたいと思います。
クエリの方は、メインテーブルの注文書Noに、サブテーブルの注文書No(重複しないサブデータ(連番、品名、金額))をリレーションシップでつなげてみたいと思います。

今ある入力フォーム(全てのフィールド分をテキストで作っています)ですが、重複しないテキストだけを選んで、プロパティ等でサブフォーム化することなんて出来ませんよね?
(サブフォームの仕方、これから勉強するので、的外れかな質問かもしれませんが)

補足日時:2010/04/17 19:17
    • good
    • 0
この回答へのお礼

ありがとうございました。
助かりました。これから勉強していきます

お礼日時:2010/04/22 21:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!