こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

テーブル1から抽出したものをテーブル2に入れたい

ACCESSのVBA初心者です。
基本的な質問で申し訳ないのですが、どうかご教授をお願いします。

まず、まったく同じフィールドを持つテーブル1とテーブル2があります。
抽出したい項目は、テーブル1の中にある[性別]と[登録月]が一致するデータの全てです。
性別と登録月は別のフォームのコンボボックスで選択したもので抽出しようと思っています。

該当するデータが含まれているレコードを全てテーブル2に移したいです。

説明が下手で申し訳ないのですが、どうかご教授をお願い致します。


Dim rs As DAO.Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("テーブル1", dbOpenDynaset)
DoCmd.RunSQL "DELETE FROM テーブル2"
rs.Filter = " テーブル1.性別 = テーブル2.性別 & テーブル1.登録月 = テーブル2.登録月"
テーブル2 = テーブル1.RecordsetClone

最初にdeleteがあるのは、前回の抽出条件を消したいからです。
よろしくお願い致します。

投稿日時 - 2013-07-18 18:30:51

QNo.8181811

困ってます

質問者が選んだベストアンサー

SQLはDAOでも実行できると思いますよ。

http://www.accessclub.jp/sql/05.html

投稿日時 - 2013-07-24 17:45:26

お礼

ありがとうございました!無事できました!

投稿日時 - 2013-07-26 16:04:20

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

せっかくアクセス使ってるんだから、、、

削除クエリ、追加クエリは作れますか? マクロでそれらのクエリを実行させても良いですし、

それをSQLビューで見ると、SQL文が見えますので、ADOなどでSQL実行させても良いです。


Dim CON As New ADODB.Connection
Dim strSQL as string
Set CON = CurrentProject.Connection
strSQL = "delete from table2"
CON.Execute strSQL
strSQL= "INSERT INTO table2 SELECT * from table1 where table1.性別 ='M' and table1.month = '07'"
CON.Execute strSQL
Set CON = Nothing

こんな感じ。 2回目のstrSQLは適宜調整してください。

投稿日時 - 2013-07-18 19:01:31

補足

返事が遅くなってしまい申し訳ございません;
実はクエリとADOを使わずに作らなければならないものでして、ShowMeHowさんの回答で試してみて、問題なく動きはしたのですが解決にはなりませんでした;

投稿日時 - 2013-07-23 13:27:31

あなたにオススメの質問