AccessVBA:【DAO】テーブル作成(CREATE TABLE・SELECT INTO・CreateTableDef)
■DAOでのテーブル作成方法
ここではDAOを使って、Accessにテーブルを作成する方法を説明していきます。
以下のようにいくつかやり方がありますので、状況に合わせて使ってください。
- 「CREATE TABLE」文で作成
- 「Select Into」文で作成
- 「CreateTableDefメソッド」で作成
■SQLの「CREATE TABLE」文で作成
DAOでは「CREATE TABLE」文を使ってテーブルを作成することができます。
構文:CREATE TABLE テーブル名(カラム名 データ型 キー・制約)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Private Sub SQLテーブル作成_Click() Dim CDB As DAO.Database 'DAOデータベース用のオブジェクトを宣言' Dim xSQL As String Set CDB = CurrentDb '現在のデータベースに接続' 'Set CDB = "C:\Users\VBA\Newファイル.accdb"' '他のAccessに接続' '//Create' xSQL = "CREATE TABLE [T_一覧情報](" xSQL = xSQL & "[番号] Text(255) PRIMARY KEY" xSQL = xSQL & ",[名前] Text(255) NOT NULL" xSQL = xSQL & ",[科目] Text(255)" xSQL = xSQL & ",[点数] Long" xSQL = xSQL & ")" CDB.Execute xSQL 'SQLを実行' CDB.Close 'DBを閉じる' Set CDB = Nothing '接続解除' MsgBox "完了" End Sub |
■SQLの「Select Into」文で作成
「SELECT INTO」は、すでにあるテーブルをコピーして作成するものです。
テーブルの構造とともに、レコードもコピーできます。
※注意点としてはインデックスや制約はコピーされません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Private Sub SQL実行_Click() Dim CDB As DAO.Database 'DAOデータベース用のオブジェクトを宣言' Dim xSQL As String Set CDB = CurrentDb '現在のデータベースに接続' 'Set CDB = "C:\Users\VBA\Newファイル.accdb"' '他のAccessに接続' '//Select Into' xSQL = "SELECT * " xSQL = xSQL & "INTO [T_サンプルコピー]" xSQL = xSQL & "FROM [サンプル1]" CDB.Execute xSQL 'SQLを実行' CDB.Close 'DBを閉じる' Set CDB = Nothing '接続解除' MsgBox "完了" End Sub |
■「CreateTableDefメソッド」で作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Private Sub テーブル作成_CreateTabledef_Click() Dim CDB As DAO.Database 'DAOデータベース用のオブジェクトを宣言' Dim TD As DAO.TableDef Dim xSQL As String Set CDB = CurrentDb '現在のデータベースに接続' Set TD = CDB.CreateTableDef("T_一覧情報") TD.Fields.Append TD.CreateField("番号", dbText, 255) TD.Fields.Append TD.CreateField("名前", dbText, 255) TD.Fields.Append TD.CreateField("科目", dbText, 255) TD.Fields.Append TD.CreateField("点数", dbLong) CDB.TableDefs.Append TD CDB.Close 'DBを閉じる' Set TD = Nothing Set CDB = Nothing '接続解除' MsgBox "完了" End Sub |