VBA・SQL|AccessでINSERT INTOを使ってレコードを追加する方法

エクセルVBA VBAでSQL



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を覚えておいてくださいね☆




VBAでSQL
ブイサバ【Excel VBAサバイバル】~とりあえずここに来れば解決できる~

コメント

タイトルとURLをコピーしました