ほげーむわーく

宿題をゲームのように楽しむブログ

VBAでAccessデータベースを活用しよう~列の追加&削除編~

f:id:takehito33711:20181220194712p:plain
前回の記事ではテーブルの新規作成と削除を行いました。

今回はテーブルに新しい列の追加と削除を行っていきます。

前回はテーブルの作成と同時に列を追加しましたが、新しく列をさらに追加したいときや、
間違えて作ってしまった列を削除したいときに有効です。

この記事からいよいよデータベースでおなじみのSQLが登場します。

それではやっていきましょう。

新しい列を追加しよう

VBAを使ってAccessデータベースに新しい列を追加する方法を紹介します。

冒頭で紹介したようにSQLを使っていきます。

SQL文とは何ぞや?という方は以下のサイトが参考になります。
https://wa3.i-3-i.info/word15078.html

データベースさんに列を追加してもらうには
ALTER TABLE テーブル名 ADD 追加する列名 データ型
という呪文を唱えてあげればできます。

ここでは下の5つの列を追加してみましょう。

列名 データ型
ID INT
名前 VARCHAR(20)
生年月日 DATE
年齢 TINYINT
職業 VARCHAR(50)

データ型ってなんやねんって思われたのではないでしょうか。
前回の記事でもデータ型を扱いましたが、SQL文を使うときはSQL用のデータ型を指定する必要があります。

表中のSQLデータ型は以下のサイトを参考にしています。
kaya-soft.com

表の説明を簡単にすると、
IDは多くの数字になりそうなので20億まで数字が入るINT、
名前は文字列なので可変長のVARCHAR、
生年月日は日付なのでDATE、
年齢は数字なので255まで扱えるTINYINT、
職業は文字列なので可変長のVARCHARをデータ型にしました。

これで20億人まで名前と、255歳までのデータを入れることができるようになります。
名前と職業の()内の数値は適当です。

実際のコードは次のようになります。

新しい列を追加するコード

Public Sub 列追加()
  
  Dim strDB As String
  Dim DBFile As String
  Dim CMD As ADODB.Command
  Dim SQL As String
    
  DBFile = "データベースファイルの絶対パス"
  strDB = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBFile

  Set CMD = New ADODB.Command
    
  SQL = "ALTER TABLE テーブル名 ADD ID INT"
  CMD.ActiveConnection = strDB
  CMD.CommandText = SQL
  CMD.Execute
    
  SQL = "ALTER TABLE テーブル名 ADD 名前 VARCHAR(20)"
  CMD.ActiveConnection = strDB
  CMD.CommandText = SQL
  CMD.Execute
    
  SQL = "ALTER TABLE テーブル名 ADD 生年月日 DATE"
  CMD.ActiveConnection = strDB
  CMD.CommandText = SQL
  CMD.Execute
    
  SQL = "ALTER TABLE テーブル名 ADD 年齢 TINYINT"
  CMD.ActiveConnection = strDB
  CMD.CommandText = SQL
  CMD.Execute
    
  SQL = "ALTER TABLE テーブル名 ADD 職業 VARCHAR(50)"
  CMD.ActiveConnection = strDB
  CMD.CommandText = SQL
  CMD.Execute
    
  Set CMD = Nothing

End Sub

簡単に解説していくよ

繰り返しの部分があるところが冗長な感じがありますがまあいいでしょう。

SQL文は文字列のため、String型で宣言しています。

SQL文を使って列の追加するにはCommandオブジェクトを使用します。
ここではCMDを変数として宣言しています。
実際に使用する際にはSetを使ってCommandさんを召喚します。

Commandさんに作ったSQL文を渡してExcuteを実行してやると、
Commandさんが仕事をして無事列の追加ができました。

列を削除しよう

続いて列の削除もやっていきましょう。

列を削除するSQL文の呪文は、
ALTER TABLE テーブル名 DROP COLUMN 列名」です。
実際のコードは以下のようになります。

列を削除するコード

Public Sub 列の削除()
    
  Dim strDB As String
  Dim DBFile As String
  Dim CMD As ADODB.Command
  Dim SQL As String
  
  DBFile = "データベースファイルの絶対パス"
  strDB = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBFile
    
  Set CMD = New ADODB.Command

  SQL = "ALTER TABLE テーブル名 DROP COLUMN 列名"
  CMD.ActiveConnection = strDB
  CMD.CommandText = SQL
  CMD.Execute
    
  Set CMD = Nothing
    
End Sub

簡単に解説していくよ

列の削除は列の追加とほとんど同じですね。

重複するので解説することがほとんどありません(笑)


以上が列の追加と削除の方法でした。

お疲れ様でした。