|
横から失礼します。
>件数が大量の場合の処理の仕方教えてください
ちょっと聞きたいのですが、「件数」とは、データ数のことでしょうか?それともフィールド数?
データ数ならVBAでやると結構な時間がかかりますね。トランザクション必須です。
ちなみに、
1.全110フィールドが同一のデータ
2.全110フィールドの内1つでも違うフィールドがT_BBBにあるデータ
3.全110フィールドの内1つでも違うフィールドがT_CCCにあるデータ
の3つのテーブルを作りたいということですよね。
私が考えた方法としては
Dim rs_BBB As DAO.Recordset
Dim rs_CCC As DAO.Recordset
Dim same_flag As Boolean
〜レコードセットにデータをセット〜
'T_BBBを元に比較、同一データとT_BBBにだけあるデータを拾う
Do Until rs_BBB.EOF
Do Until rs_CCC.EOF
If 全フィールド比較して同一 Then
同じデータとして新テーブルに挿入
same_flag = True
Exit Do
End If
Loop
If same_flag = False Then 'T_CCCに同じデータが無かった場合
T_BBBにだけあるデータとして新テーブルに挿入
End If
same_flag = False 'フラグのリセット
Loop
'T_CCCを元に比較、T_CCCにだけあるデータを拾う
Do Until rs_CCC.EOF
Do Until rs_BBB.EOF
If 全フィールド比較して同一 Then
same_flag = True
Exit Do
End If
Loop
If same_flag = False Then 'T_BBBに同じデータが無かった場合
T_CCCにだけあるデータとして新テーブルに挿入
End If
same_flag = False 'フラグのリセット
Loop
という感じで、物凄いループになりました。
「応答なし」になりそうで怖い…
SQLでできないか考えたんですが、Exists使ってできないでしょうか?
1.SELECT * INTO 新テーブル1 FROM T_BBB WHERE EXISTS(SELECT * FROM T_CCC)
2.SELECT * INTO 新テーブル2 FROM T_BBB WHERE NOT EXISTS(SELECT * FROM T_CCC)
3.SELECT * INTO 新テーブル3 FROM T_CCC WHERE NOT EXISTS(SELECT * FROM T_BBB)
これで新テーブルに保存される…と思います。
(もしかしたらとんでもない間違いをしてるかもしれません)
他の方へ:
間違っていたら指摘をお願いします。orz
|
|