VBAでAccessデータベースを活用しよう~列の追加&削除編~
前回の記事ではテーブルの新規作成と削除を行いました。
今回はテーブルに新しい列の追加と削除を行っていきます。
前回はテーブルの作成と同時に列を追加しましたが、新しく列をさらに追加したいときや、
間違えて作ってしまった列を削除したいときに有効です。
この記事からいよいよデータベースでおなじみの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文の呪文は、
「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
簡単に解説していくよ
列の削除は列の追加とほとんど同じですね。
重複するので解説することがほとんどありません(笑)
以上が列の追加と削除の方法でした。
お疲れ様でした。