• 締切済み

ACCESS クエリからテーブルへのコピペ

Pzrivate Sub cmb品番_AfterUpdate() Dim Rst As DAO.Recordset Dim z As String z = DLookup("コード", "Q_コンポーネント", "専用コード='" & Me.tx専用コード & "'") Set Rst = CurrentDb.OpenRecordset("W_部品一覧", dbOpenTable) With Rst .AddNew .Fields("区分") = DLookup("部門", "Q_マスタ", "専用コード='" & z & "'") .Fields("分類1") = DLookup("分類1", "Q_マスタ", "専用コード='" & z & "'") .Fields("分類2") = DLookup("分類2", "Q_マスタ", "専用コード='" & z & "'") .Fields("品番") = DLookup("材料", "Q_マスタ", "専用コード='" & z & "'") .Fields("品名") = DLookup("品名", "Q_マスタ", "専用コード='" & z & "'") .Fields("コード") = DLookup("コード", "Q_マスタ", "専用コード='" & z & "'") .Fields("品種") = DLookup("品種", "Q_マスタ", "専用コード='" & z & "'") .Fields("重量") = DLookup("重量", "Q_マスタ", "専用コード='" & z & "'") .Update End With Rst.Close Set Rst = Nothing End Sub ------------------------------------------------------------ 上記のコードで「Q_マスタ」クエリの内容を「W_部品一覧」テーブルにコピペしています。 ※「W_部品一覧」テーブルはサブフォームです。 「Q_マスタ」クエリの専用コードフィールドには「z」と一致する値が複数あるのですが、上記コードではそのクエリ内の一番上の1レコード分しかコピペできていません。 「z」の値が一致している全てのフィールドを「Q_マスタ」→「W_部品一覧」にコピペするようにしたいです。 For~NextやDo While~Loopを使って処理回数を増やしてみたのですが、同じレコードの内容が繰り返しコピペされてしまいました。 どうすれば複数のレコードをコピペできるかご教示頂けますようお願いします。

みんなの回答

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.2

追加クエリが簡単。 どうしても1レコードずつ書き込みたければ 追加するデータも Recordset を取得し フィールド毎にコピー、 書き込み、 次のレコードを読み、繰り返す。 ということになるでしょう。

yamato_nabe
質問者

補足

m3_makiさん アドバイスありがとうございます。 投稿後、自分でも試行錯誤し、追加クエリを使う事で何とか希望通りの方法ができるようになりました。 chayamatiさん 返信が遅くなってしまい、申し訳ございません。 アドバイスありがとうございます。 投稿後、自分でも試行錯誤し、追加クエリを使う事で何とか希望通りの方法ができるようになりました。 補足依頼を頂いておりましたが、自己解決できましたので こちらの都合で大変申し訳ありませんが、クローズとさせて頂きます。

  • chayamati
  • ベストアンサー率41% (260/624)
回答No.1

>「Q_マスタ」クエリの内容を「W_部品一覧」テーブルにコピペしています。  ※「W_部品一覧」テーブルはサブフォームです。   リレーションの1側が主テーブル∞側がサブテーブルです ----------------------------------------------------------------------- 回答が出ませんね、 添付図に習って補足願います  ※図中鍵マークの付いた項目は主キーです。 「Q_マスタ」、「W_部品一覧」の実体であるテーブルの項目名  ※「W_部品一覧」テーブルはサブフォームです。   これの主フォームまたは主テーブルの項目名  主テーブルとサブテーブルのリレーションの項目

関連するQ&A