プロが教えるわが家の防犯対策術!

Accessのテーブルデータを一気にVBAで追加したい・・

Accessに一時商品登録データというテーブルがあり、
問題なければ商品登録データにデータを流し込みたいと思っています

テーブルのデータ構造は全く同じです

VBAで一時商品登録のテーブルから一件ずつデータを読み取って
商品登録データに追加することは出来るのですが
一気にデータを追加する方法があれば教えていただけないでしょうか?

よろしくお願いいたいます

A 回答 (3件)

本当にいろいろな方法があります。



一番簡単なのは、
あらかじめ「追加クエリ」を作成しておき

 Docmd.OpenQuery "追加クエリ名"

あるいは DAO で

 Set dbs = CurrentDB
 dbs.Excute "追加クエリ名"

追加クエリを使用しない場合は
追加クエリの SQL文 に相当するSQL を 実行。

 strSQL="INSERT INTO 商品登録データ SELECT 一時商品登録データ.* FROM 一時商品登録データ"

 Docmd.RunSQL strSQL

あるいは DAO で

 Set dbs = CurrentDB
 dbs.Excute strSQL

とか。

直書き、間違いがあったら御免。
    • good
    • 2
この回答へのお礼

まさに、自分が知りたかったSQL構文でした

追加クエリーを作成するとはいいアイデアですね

活用させてもらいます

ありがとうございました

お礼日時:2010/09/14 17:57

Do Until rs2.EOF



の前に

rs2.MoveFirst

を追加して、

rs2.MoveFirst
Do Until rs2.EOF

としてください。
    • good
    • 1

方法はいろいろですが、以下のような方法があります。



テーブルのフィールド名を商品名、価格とします。
DAOを使っているのでコード表のツール、参照設定
からDAOの一番高いバージョンを選択してください。


Private Sub コマンド0_Click()
Dim db As Database
Dim rs1 As Recordset
Dim rs2 As Recordset

If MsgBox("データを転送していいですか?", vbYesNo) = vbYes Then

Set db = CurrentDb
Set rs1 = db.OpenRecordset("商品登録データ", dbOpenDynaset)
Set rs2 = db.OpenRecordset("一時商品登録データ", dbOpenDynaset)

Do Until rs2.EOF
rs1.AddNew
rs1!商品名 = rs2!商品名
rs1!価格 = rs2!価格
rs1.Update
rs2.MoveNext
Loop
rs1.Close: Set rs1 = Nothing
rs2.Close: Set rs2 = Nothing
db.Close: Set db = Nothing
End If
End Sub



なお、フィールド名が増加する場合は、
rs1.AddNew
rs1!商品名 = rs2!商品名
rs!価格 = rs2!価格
rs1.Update
のところに、フィールド名を追加してください。
    • good
    • 0
この回答へのお礼

ありがとうございました

参考にさせてもらいます

お礼日時:2010/09/14 18:00

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

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

関連するカテゴリからQ&Aを探す


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