秘密基地、どこに作った?

お世話になります。
アクセスでVBAにチャレンジしながら見積書作成に似たシステムを作ろうとしています。
作りたいイメージは、あらかじめ登録してあるサブレコードとリレーションでつながったテンプレートから、必要なレコードを複数個選択(実際はレコードを表示したリストボックス)してボタンを押すと、作成フォームのほうへコピーされるというものです。
追加クエリを使って、1レコードのコピーはできるようになったのですが、テンプレートから一気に複数個コピーするというものがどうしてもできません。
方法(できればコードも)をご教示いただければありがたいです。

1レコードのコピーは、
1.F_作成フォームにあるリストボックス(テンプレートのレコードを表示しています)からコピーしたいレコードを選択して、コマンドボタンをクリック
2.テンプレートフォームと同じフィールドが用意されたF_作成フォームに内容を転記
3.追加クエリにて、ID(主キー)によってリンクされたサブレコードをF_作成のサブフォームにコピー
というものをVBA+追加クエリで作りました。
素人作成で大変お恥ずかしいですが参考に作成したコードを下記に示します。
ちなみにコードの中でFor~Nextを使っているのは、新しいレコードを記入すると自動採番されて、番号というフィールドに登録され、番号の小さいもの順に並べられるようにしたもので、下記コード中の小項目選択リスト.Column(1)が、テンプレートのレコードを示すものです。実際は複数行あります。また、Forms![F_作成]![F_小項目の内訳]がサブフォームとなっていて、ここにサブレコードをコピーしたいです。

Dim B1, B2, re As Long
'番号の自動採番
B1 = Forms![F_作成]![F_小項目].Form![番号]
B2 = Format(DCount("番号", "Q_小項目"))
For i = B1 To B2
Forms![F_作成]![F_小項目].Form![番号].SetFocus
Forms![F_作成]![F_小項目].Form![番号] = i + 1
Forms![F_作成]![F_小項目].Form.Recordset.MoveNext
Next i
'レコード転記
Forms![F_作成]![F_小項目].Form.Recordset.AddNew
Forms![F_作成]![F_小項目].Form![中項目ID] = Forms![F_作成]![中項目リスト値]
Forms![F_作成]![F_小項目].Form![番号] = B1
Forms![F_作成]![F_小項目].Form![名称] = 小項目選択リスト.Column(1)
Forms![F_作成]![F_小項目].Form.Recordset.MoveFirst
Forms![F_作成]![F_小項目].Requery
'追加クエリ(サブフォーム用)
'---------------------------------------------------------
DoCmd.SetWarnings False
DoCmd.OpenQuery "Q_小項目詳細追加"
DoCmd.SetWarnings True
Forms![F_作成]![F_小項目の内訳].Requery
'---------------------------------------------------------
Forms![F_作成]![F_小項目].SetFocus
DoCmd.GoToRecord , , acGoTo, B1

まずは、リストボックスを複数選択できるようにして、選択されたレコードをTPFからACFへコピーして、リレーションで対応するレコードをサブフォームにコピーするって感じだと思うのですが。
以上、よろしくお願いいたします。

A 回答 (1件)

人それぞれやり方あると思いますけど、ワークテーブル使った方が簡単だと思います。



入力用テーブルを別に用意して入力用フォームと連結。
リストボックスで選択したレコードは、キーを使って入力用テーブルに追加クエリ。
最後に入力用フォームをリクエリ。

入力確定時に、入力用テーブルから実テーブルへ追加クエリ。
最後に入力用テーブルをクリア。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
このやり方で、サブレコードのコピーまでできるのでしょうか?
できれば例示いただければありがたいです。
お世話になります!

お礼日時:2021/12/23 12:28

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A