Access VBA質問箱 IV

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

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


1294 / 9994 ←次へ | 前へ→

【11998】Re:二つのテーブルを比較する方法
回答  小僧  - 11/5/23(月) 16:17 -

引用なし
パスワード
   ▼KANA さん:
こんにちは。

>>      MyDic.Add "1", rs(0)
>>      MyDic.Add "2", rs(0).Value
>
> 上記の部分で rs(0)とrs(0).value の意味が
> いまいちわかりませんので教えていただけないでしょうか?

ごめんなさい。
KANAさんの記述を使うと

Midic.Add "1", rs![F1]
Midic.Add "2", rs![F1].Value

の方が解りやすかったですね。

rs(0) は rs の一番初めのフィールドを表しています。


>rs(0)のほうはFieldとでてきてて

rs![F1] をDictionary オブジェクトの Item 値に代入すると
rs![F1] の値ではなく、ADODB.Recordset で定義されている
フィールドオブジェクトへの参照を代入してしまっている事を意味します。

初めに投稿されたコードですと、

>>> rs.Close
>>> Set rs = Nothing

の箇所で rs への参照が切れてしまっている為、
フィールドも参照できなくなりエラーが発生しております。

値だけをDictionaryオブジェクトに入力するのであれば
rs![F1].Value と明示的に指定しなければいけないという事です。


KANAさんのコードをそのまま生かすとなると、

>  MyVal = Array(rs![F1], rs![F2], rs![F3], rs![F4], rs![F5], rs![F6], rs![F7], _
>        rs![F8], rs![F10], rs![F11], rs![F12], rs![F13], rs![F14], rs![F17])

  MyVal = Array(rs![F1].Value, rs![F2].Value, rs![F3].Value, rs![F4].Value, rs![F5].Value, rs![F6].Value, rs![F7].Value, _
        rs![F8].Value, rs![F10].Value, rs![F11].Value, rs![F12].Value, rs![F13].Value, rs![F14].Value, rs![F17].Value)

となりますね。


> Accessで、こういうことをやる場合は、
> Dictionaryはあまり使わないほうがいいのでしょうか?

当方でしたら、SQLで片づけてしまうかと思われます。
提示されたコードのうち、左3つを比較するSQLでしたら

SELECT
  旧TBL.key
 , IIf([旧TBL]![F1]=[新TBL]![F2],"",[新TBL]![F2]) AS 比較1
 , IIf([旧TBL]![F2]=[新TBL]![F3],"",[新TBL]![F3]) AS 比較2
 , IIf([旧TBL]![F3]=[新TBL]![F4],"",[新TBL]![F4]) AS 比較3
FROM
  旧TBL
INNER JOIN
  新TBL
ON 旧TBL.key = 新TBL.key
WHERE NOT(
     ([旧TBL]![F1]=[新TBL]![F2])
   AND ([旧TBL]![F2]=[新TBL]![F3]) 
   AND ([旧TBL]![F3]=[新TBL]![F4])
         )


上記のSQLをクエリのSQLビューに張り付け実行すると
結果が出るかと思われます。
(コピーペーストする際は
 全角スペースは半角スペースに変換して下さい)

ただ、自分に慣れている方法で結果を出すことは
決して悪い事だと思いませんので
まずはコードの問題を解決した後
ご興味があればSQLにも挑戦されてみてはいかがでしょうか。
482 hits

【11993】二つのテーブルを比較する方法 KANA 11/5/20(金) 9:09 質問[未読]
【11995】Re:二つのテーブルを比較する方法 小僧 11/5/23(月) 11:49 発言[未読]
【11997】Re:二つのテーブルを比較する方法 KANA 11/5/23(月) 15:18 質問[未読]
【11998】Re:二つのテーブルを比較する方法 小僧 11/5/23(月) 16:17 回答[未読]
【11999】Re:二つのテーブルを比較する方法 KANA 11/5/24(火) 16:12 質問[未読]
【12000】Re:二つのテーブルを比較する方法 小僧 11/5/25(水) 12:12 発言[未読]
【12001】Re:二つのテーブルを比較する方法 KANA 11/5/25(水) 17:22 お礼[未読]

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