「DBチェッククラス」の編集履歴(バックアップ)一覧はこちら

DBチェッククラス」(2013/06/09 (日) 00:21:28) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

***DBチェッククラス - ソース Option Compare Database Option Explicit ' ACC_CheckDataBase ' VBAでDBを操作する前に行う簡単なチェックを簡易提供する ' DBに接続されていることが前提 ' 実行環境にはADOX,ADODBの参照設定が必要です Private Sub class_initialize() ' なにもしません End Sub ' HasSelectedTable ' 指定DBに指定テーブルが存在しているかを確認する ' 引数:あり ' iDB : ADODB.Connection :検索先のDB ' iSelectedTableName : String :検索対象のテーブル名 ' 戻り値:あり ' Boolean : 検索対象のテーブルの有無(テーブルが存在していた場合TRUE) Public Function HasSelectedTable(ByVal iDB As ADODB.Connection, ByVal iSelectedTableName As String) As Boolean Dim dbCatalog As ADOX.Catalog Dim dbTbl As ADOX.Table Dim result As Boolean ' 1.返却値の初期化 result = False ' 2.カタログ取得 Set dbCatalog = New ADOX.Catalog Set dbCatalog.ActiveConnection = iDB ' 3.指定DBのすべてのテーブルに対し処理を行う For Each dbTbl In dbCatalog.Tables ' A.検索対象のテーブルが存在していれば、返却値をTRUEにする If dbTbl.Name = iSelectedTableName Then result = True Exit For End If Next HasSelectedTable = result End Function ' HasRecordInSelectedTable ' 指定DBの指定テーブルがレコードを1件以上保持しているかを確認する ' 事前に指定テーブル自体の有無は確認しておくこと ' 引数:あり ' iDB : ADODB.Connection :検索先のDB ' iSelectedTableName : String :検索対象のテーブル名 ' 戻り値:あり ' Boolean : 検索対象のレコードの有無(レコードが存在していた場合TRUE) Public Function HasRecordInSelectedTable(ByVal iDB As ADODB.Connection, ByVal iSelectedTableName As String) As Boolean Dim dbTbl As ADOX.Tables Dim rsObj As ADODB.Recordset Dim result As Boolean ' 1.返却値の初期化 result = False ' 2.確認時点の指定テーブルのレコードを取得 Set rsObj = New ADODB.Recordset Call rsObj.Open(iSelectedTableName, iDB, adOpenStatic, adLockReadOnly) If rsObj.RecordCount > 0 Then '3.レコード数が1件以上の場合、返却値をTRUEにする result = True End If Set rsObj = Nothing HasRecordInSelectedTable = result End Function ' HasSelectedQuery ' 指定DBに指定クエリが存在しているかを確認する ' 引数:あり ' iDB : ADODB.Connection :検索先のDB ' iSelectedQueryName : String :検索対象のクエリ名 ' 戻り値:あり ' Boolean : 検索対象のクエリの有無(クエリが存在していた場合TRUE) Public Function HasSelectedQuery(ByVal iDB As ADODB.Connection, ByVal iSelectedQueryName As String) As Boolean Dim dbCatalog As ADOX.Catalog Dim dbView As ADOX.View Dim dbPro As ADOX.Procedure Dim result As Boolean ' 1.返却値の初期化 result = False ' 2.カタログ取得 Set dbCatalog = New ADOX.Catalog Set dbCatalog.ActiveConnection = iDB ' 3.指定DBのすべてのクエリに対し処理を行う ' A.クエリ(View) For Each dbView In dbCatalog.Views ' 3.検索対象のテーブルが存在していれば、返却値をTRUEにする If dbView.Name = iSelectedQueryName Then result = True Exit For End If Next ' B.クエリ(Procesure) If result <> True Then For Each dbPro In dbCatalog.Procedures If dbPro.Name = iSelectedQueryName Then result = True Exit For End If Next End If HasSelectedQuery = result End Function [[トップ]]  

表示オプション

横に並べて表示:
変化行の前後のみ表示: