ray88’s diary

お仕事で困ったとき用の自分用の覚書

AccessVBA 対象レコード総件数を確認する

※部品使用の前提条件
 パブリック変数DbConnectionStringにADOの接続文字列を設定しておく
(例)

Public Const DbConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                                            "Data Source=C:\デスクトップ\テストDB.accdb;" & _
                                            "Jet OLEDB:Database Password=pass555;"

■レコード件数確認部品

Function fncTargetRecordCount(strSQL As String) As Integer
'-----------------------------------------------------------------------------------------------------
'機能:指定されたテーブル名、またはSQL文のレコード件数を確認する
'前提条件:パブリック変数DbConnectionstringにADOの接続文字列が設定されていること
'引数1:テーブル名またはSQL文
'戻り値:対象レコードの件数
'------------------------------------------------------------------------------------------------------
    Dim CN As Object
    Dim RS As Object
     Set CN = CreateObject("ADODB.Connection")
     Set RS = CreateObject("ADODB.Recordset")
' ----------------------------------------------------------------------------
On Error GoTo ErrHandler
'DBファイルに接続してレコードセットを取得
'DbConnectionStringはDBファイルのConnectionStringを格納した定数
    CN.Open = DbConnectionString
    'adOpenKeysetの値は1,adLockOptimisticの値は3
    RS.Open strSQL, CN, 1, 3
'------------------------------------------------------------------------------
    '抽出レコードの件数をカウント
    fncTargetRecordCount = RS.Count
    Debug.Print "レコード総件数" & fncTargetRecordCount
'------------------------------------------------------------------------------
    RS.Close: CN.Close
    Set RS = Nothing: Set CN = Nothing
'    Debug.Print "T_承認履歴・更新成功"
    Exit Function
    '---------------------------------------------------
ErrHandler:
    Debug.Print Err.Number & ":" & Err.Description
    RS.cancelupdate
    RS.Close
    CN.Close
    Set RS = Nothing
    Set CN = Nothing
End Function