VBAを使ってAccessのテーブルにレコードを追加する方法についてよく質問をもらいます。
SQLでは、テーブルにレコードを追加するには
INSERT INTO
を使います。
今回は、VBAを使ったSQLにおいて
- テーブルにレコードを追加する方法
- 特定のフィールドのレコードのみ追加する方法
- INSERT INTOを使ったサンプルコード
について徹底的に説明していきますね☆
VBA・SQL|AccessでINSERT INTOを使ってレコードを追加する方法
テーブルにレコードを追加する方法
特定のテーブルにレコードを追加するには、INSERT INTO文を使います。
▶レコードを追加するINSERT INTO文の構文
INSERT INTO テーブル名 VALUES(値1,値2・・・)
具体例として、以下のテーブル「商品マスタ」があったときに、レコードを追加してみます。
以下のフィールドにそれぞれ値を入れたレコードを追加してみます。
- 「商品コード」→B3
- 「商品名」→サーモン
- 「価格」→200
- 「出荷元」→北海道
INSERT INTO 商品マスタ VALUES('B3','サーモン',200,'北海道');
【実行結果】
さて、INSERT INTO を使ってレコードを追加するときの注意点は2点です。
- VALUESのカッコ内は、対象のテーブルのフィールドと同じ順序で値を記載する。
- カッコ内では、文字列は「’(シングルクォーテーション)」で囲む。数字は囲まない。
さて、それでは全てのフィールドに値を入れずに、特定のフィールドのみに値を入れたレコードを追加するにはどのようにすればよいのでしょうか?
以下で解説していきますね☆
特定のフィールドのレコードのみ追加する方法
特定のフィールドのみに値を入れたレコードを追加するには、以下の構文になります。
▶特定のフィールドのみレコード追加する構文
INSERT INTO テーブル名(フィールド名1,フィールド名2・・・) VALUES(フィールド名1の値,フィールド名2の値・・・)
つまり、値を入れるフィールド名のみを記述し、VALUES内にはそれぞれのフィールドに応じた値を記述します。
具体的には以下のようになります。
INSERT INTO 商品マスタ(商品コード,商品名,価格) VALUES(B4','キンメダイ',500);
【実行結果】
注意点は、VALUES内の文字列は「’」で囲みますが、フィールド名は「’」で囲む必要はありません。
混同しないように気を付けてくださいね。
それでは、以上のコードを実際にVBAで記述したサンプルコードを以下に示します。
VBAでSQLを使ってレコードを追加するサンプルコード
以上のINSERT INTOを使ったレコード追加と、特定のフィールドのみのレコードの追加について、実際にVBAを使ったAccessのSQLのサンプルコードを以下に示します。
【サンプルコード】
Sub レコード追加()
Dim cn As ADODB.Connection
'Connectionオブジェクトを作成
Set cn = New ADODB.Connection
'データベースを開く
cn.Open _
"Provider=Microsoft.ACE.OLEDB.16.0;" & _
"Data Source=" & ThisWorkbook.Path & "\テスト.accdb;"
Dim vSQL As String
vSQL = "INSERT INTO 商品マスタ VALUES('B3','サーモン',200,'北海道');"
'SQLを実行
cn.Execute vSQL
vSQL = "INSERT INTO 商品マスタ(商品コード,商品名,価格) VALUES('B4','キンメダイ',500);"
'SQLを実行
cn.Execute vSQL
cn.Close
End Sub
【実行結果】
まとめ
今回は、VBAを使ってSQLでAccessのテーブルにレコードを追加する方法についてお伝えしてきました。
SQLでテーブルにレコードを追加するには以下のINSERT INTOを使います。
INSERT INTO テーブル名 VALUES(値1,値2・・・)
また、特定のフィールドのレコードのみを追加する方法は、以下のように値を入れるフィールド名のみを記述し、VALUES内にはそれぞれのフィールドに応じた値を記述します。
INSERT INTO テーブル名(フィールド名1,フィールド名2・・・) VALUES(フィールド名1の値,フィールド名2の値・・・)
Accessではレコードを追加する機会が頻繁にありますので、ぜひINSERT INTOを覚えておいてくださいね☆
コメント