Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1195 / 9994 ←次へ | 前へ→

【12098】Re:2つのテーブルの照合
回答  kou  - 11/10/13(木) 9:20 -

引用なし
パスワード
   横から失礼します。

>件数が大量の場合の処理の仕方教えてください

ちょっと聞きたいのですが、「件数」とは、データ数のことでしょうか?それともフィールド数?
データ数なら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
514 hits

【12091】2つのテーブルの照合 sora 11/9/30(金) 0:24 質問[未読]
【12096】Re:2つのテーブルの照合 11/10/12(水) 16:51 回答[未読]
【12098】Re:2つのテーブルの照合 kou 11/10/13(木) 9:20 回答[未読]

1195 / 9994 ←次へ | 前へ→
ページ:  ┃  記事番号:
1078193
(SS)C-BOARD v3.8 is Free