Microsoft Access 掲示板

accessから、重複のないデータを取得する / 2

3 コメント
views
2
名前なし 2025/11/27 (木) 14:26:53 40184@3d35d

「重複のないデータを取得する」とのことですが、件数を取得するということでいいのでしょうか。
提示のコードは常に全データ件数になり、重複も含む件数になると思いますが。

'前略

    ReDim myArray(FlCnt, RcCnt) '二次元配列を再定義
    myArray = adoRs.GetRows    '全レコードを配列として取得

    x = 0
    Dim nbDic As Object
    Set nbDic = CreateObject("Scripting.Dictionary") 'Dictionaryを生成、Dictionaryの中身は空
    For i = 0 To RcCnt - 1
      If nbDic.exists(myArray(0, i)) = False Then '空のDictionary内にデータがあるか確認
                                                  '空なので存在するはずがない、常にFalse
         x = x + 1
      End If
     Next

    MsgBox x

件数を取得するなら下記のようなコードになると思います。

'前略

    ReDim myArray(FlCnt, RcCnt) '二次元配列を再定義
    myArray = adoRs.GetRows    '全レコードを配列として取得

    Dim nbDic As Object
    Set nbDic = CreateObject("Scripting.Dictionary") 'Dictionaryを生成、Dictionaryの中身は空
    For i = 0 To RcCnt - 1
      nbDic(myArray(0, i)) = myArray(0, i) 'データ配列の1列目をDictionaryに格納
                                           ’重複データは上書きされる
    Next

    MsgBox nbDic.Count  ’件数を表示

SELECT DISTINCTを使うと、少し負荷が大きいようで時間がかかります

重複をチェックするフィールドに インデックス(重複あり) を設定してありますか。
もし設定してないなら、設定すると飛躍的に速度は改善すると思います。

通報 ...