テーブルの操作

#1 テーブルを作成する

※作成しようとしているテーブルがすでに存在する場合エラーとなります

DAO :TableDef を使う

<使用例>

Sub テーブルを作成するDAO()
'tbl得意先DAOを作成します。
'   フィールド0:得意先コード
'   フィールド1:フリガナ
'   フィールド2:得意先名
    
    Const strTbl As String = "tbl得意先DAO"
    
    Dim dbs As Database
    Dim tdf As DAO.TableDef
    Dim idx As DAO.Index

    Set dbs = CurrentDb
    Set tdf = dbs.CreateTableDef(strTbl)

    With tdf
        .Fields.Append .CreateField("得意先コード", dbLong)
        .Fields.Append .CreateField("フリガナ", dbText, 30)
        .Fields.Append .CreateField("得意先名", dbText, 30)
    End With
    
    dbs.TableDefs.Append tdf
    
    With tdf    '得意先コードに主キーを設定
        Set idx = .CreateIndex("NumIndex")
        idx.Fields.Append idx.CreateField("得意先コード")
        idx.Primary = True
        .Indexes.Append idx
    End With
    
    Set idx = Nothing
    Set tdf = Nothing
    dbs.Close: Set dbs = Nothing
End Sub


ADO :Command を使う

<使用例>

Sub テーブルを作成するADO()
'tbl得意先ADOを作成します。
'   フィールド0:得意先コード
'   フィールド1:フリガナ
'   フィールド2:得意先名

    Dim cnn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim strSQL As String
    
    strSQL = "CREATE TABLE tbl得意先ADO ("
    strSQL = strSQL & "得意先コード INT PRIMARY KEY,"
    strSQL = strSQL & "フリガナ TEXT(30),"
    strSQL = strSQL & "得意先名 TEXT(30))"
      
    Set cnn = CurrentProject.Connection
    Set cmd.ActiveConnection = cnn

    cmd.CommandText = strSQL
    cmd.Execute

    Set cmd = Nothing
    cnn.Close: Set cnn = Nothing
End Sub

ADOX:Catalog を使う

<使用例>

Sub テーブルを作成するADOX()
'tbl得意先ADOXを作成します。
'   フィールド0:得意先コード
'   フィールド1:フリガナ
'   フィールド2:得意先名
    
    Const strTbl As String = "tbl得意先ADOX"
    
    Dim cnn As New ADODB.Connection
    Dim cat As New ADOX.Catalog
    Dim tbl As New Table
    Dim idx As New ADOX.Index
    
    Set cnn = CurrentProject.Connection
    cat.ActiveConnection = cnn
    
    With tbl
        .Name = strTbl
        .Columns.Append "得意先コード", adInteger
        .Columns.Append "フリガナ", adVarWChar, 30
        .Columns.Append "得意先名", adVarWChar, 30
    End With
    
    cat.Tables.Append tbl
    
    With idx    '得意先コードに主キーを設定
        .Name = "NumIndex"
        .Columns.Append "得意先コード"
        .PrimaryKey = True
    End With
    
    tbl.Indexes.Append idx
    
    Set cat = Nothing
    cnn.Close: Set cnn = Nothing
End Sub

SQL :RunSQL を使う

<使用例>

Sub テーブルを作成するSQL()
'tbl得意先SQLを作成します。
'   フィールド0:得意先コード
'   フィールド1:フリガナ
'   フィールド2:得意先名

    Dim strSQL As String
    
    strSQL = "CREATE TABLE tbl得意先SQL ("
    strSQL = strSQL & "得意先コード INT PRIMARY KEY,"
    strSQL = strSQL & "フリガナ TEXT(30),"
    strSQL = strSQL & "得意先名 TEXT(30))"
      
    DoCmd.RunSQL strSQL
End Sub