ADOX 1


ADOXを使う

ADOXを使用するにはVisual Basic Editorから[ツール]→[参照設定]で Microsoft ADO Ext. 2.7 for DDL and Security を選択します。

ADOXを使うとデータベースを作成したり、データベース内のオブジェクトを作成したりできます。

データベースを作成する

CatalogオブジェクトのCreateを使ってデータベースを作成することができます。

Sub CreateDB()

    Dim myCtg As New ADOX.Catalog
    
    'D:\TestフォルダにSample.mdbを作成する

  myCtg.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Test\Sample.mdb"
    
End Sub

テーブルを作成する

データベース内にテーブルを作成します。

Public Sub CreateTbl()
   Dim catDB As ADOX.Catalog
   Dim tbl As ADOX.Table
   Dim DBPath As String

    strDBPath = "D:\sample.mdb"
   Set catDB = New ADOX.Catalog  ' カタログを開きます。
  
   catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & DBPath

   Set tbl = New ADOX.Table
   With tbl
      .Name = "tbl_Test"
      Set .ParentCatalog = catDB
      
      With .Columns
         .Append "Id", adInteger
         ' Id フィールドをオートナンバー型に設定します。
         .Item("Id").Properties("AutoIncrement") = True
         .Append "顧客ID", adVarWChar
         .Append "氏名", adVarWChar
         .Append "住所", adVarWChar
         .Append "電話番号", adVarWChar, 20 '桁数20に指定
         .Append "備考", adLongVarWChar
      End With
   End With

   ' データベースの Tables コレクションに新規 Table を追加します。
   catDB.Tables.Append tbl

   Set catDB = Nothing    
End Sub

追加するフィールドのデータ型は以下のように指定します。

データ型 種類 定数
テキスト   adWChar
数値型 バイト adUnsignedTinylnt
  十進 adNumeric
  整数 adSmalllnt
  単精度浮動小数点 adSingle
  長整数 adInteger
  倍精度浮動小数点 adDouble
オートナンバー   adInteger
通貨型   adCurrency
日付/時刻型   adDate
メモ型   adLongVerChar
OLEオブジェクト   adLongVerBinary
ハイパーリンク   adLongVerWChar

データ型の後に桁数を指定しない場合、フィールドのサイズは 255 になります。


テーブルを削除する

データベース内のテーブルを削除します。

Public Sub DeleteTbl()
   Dim catDB As ADOX.Catalog
   Dim tbl As ADOX.Table
   Dim DBPath As String

    strDBPath = "D:\sample.mdb"
   Set catDB = New ADOX.Catalog  ' カタログを開きます。
  
   catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & DBPath

   Set tbl = New ADOX.Table
   
      Set tbl = New ADOX.Table
   
   ' データベースの tbl_Test テーブルを削除します。
   catDB.Tables.Delete "tbl_Test"

   Set catDB = Nothing
    
End Sub

テーブルのフィールドを削除する

テーブルの指定フィールドを削除します。

Public Sub DeleteFld()
   Dim catDB As ADOX.Catalog
   Dim tbl As ADOX.Table
   Dim DBPath As String

    DBPath = "D:\sample.mdb"
   Set catDB = New ADOX.Catalog  ' カタログを開きます。
  
   catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & DBPath

   Set tbl = New ADOX.Table
   
   catDB.Tables("tbl_Test").Columns.Delete "備考"

   Set catDB = Nothing
End Sub

フィールドを追加する場合は Columns コレクションに Append を指定します。

Public Sub AppendFld()
   Dim catDB As ADOX.Catalog
   Dim tbl As ADOX.Table
   Dim DBPath As String

    DBPath = "D:\sample.mdb"
   Set catDB = New ADOX.Catalog  ' カタログを開きます。
  
   catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & DBPath

   Set tbl = New ADOX.Table
   
   '備考フィールドをテキスト型、フィールド200で追加する
   catDB.Tables("tbl_Test").Columns.Append "備考",adWChar,200

   Set catDB = Nothing
 
End Sub