ExcelWork.info

SQL文を実行する(ADO)Execute メソッド

Command オブジェクトの Execute メソッドで、SQL文を実行

Command オブジェクトExecute メソッドを使用すると、CommandText プロパティに指定したSQL文やクエリ等が実行されます。CommandText プロパティに結果を返す SQL文やクエリ等が指定された場合、新規の Recordset オブジェクトに保存されます。
パラメータクエリの場合は、引数の Parameters にクエリに渡すパラメータを指定します。パラメータクエリに関しての詳細は、クエリにパラメータを渡して結果を取得する(ADO)Command オブジェクト・Execute メソッドを参照してください。

Command.Execute メソッド

【書式】

<取得>
Set recordset = object.Execute [ ( RecordsAffected, Parameters, Options ) ]

object.Execute [ RecordsAffected, Parameters, Options ]


引数・戻り値

  • object  ・・・  対象となる Command オブジェクトを指定します。
  • recordset  ・・・  Recordset オブジェクトを表すオブジェクト変数です。Execute メソッドの実行結果、または、Nothing を取得します。
  • RecordsAffected  ・・・  長整数型(Long)の変数を指定します。Execute メソッド実行操作によって影響を受けたレコードの数をこの変数に返します(つまり、更新クエリ・追加クエリ・削除クエリなどで変更のあったレコードの数、省略可)。
  • Parameters  ・・・  クエリに渡すパラメータをバリアント型(Variant)の配列で指定します。詳細は、クエリにパラメータを渡して結果を取得する(ADO)Command オブジェクト・Execute メソッド Parameters コレクション を参照してください。
  • Options  ・・・  CommandText プロパティの評価を最適化するために使います。SQL文を実行するには、adCmdText を指定します。省略すると adCmdUnknown が指定されたと見なされます。


Insert Into ステートメント(レコード追加)を実行する

テーブルにレコードを1つ追加します(追加クエリ)

【書式】

INSERT INTO target [field1, field2, ・・・ ] VALUES ( value1, value2, ・・・ )


CreateObject 関数

  • target  ・・・  レコードを追加するテーブル・クエリの名前を指定します。
  • field1, field2, …  ・・・  レコードを追加するフィールド名(列名)を指定します。複数指定する場合はカンマで区切ります。
  • value1, value2, …  ・・・  新規に追加するレコードの値を指定します。それぞれの値は、記述順にフィールドに挿入されます。つまり、value1 は 列(field1)に、value2 は 列(value2)に挿入されます。値と値の間はカンマで区切り、テキストの値は単一引用符(’)で囲みます。

Access の場合、上記構文では一度に複数のレコードを追加することはできません。



サンプルVBAソース(レコードの追加)その1


実行結果



サンプルVBAソース(レコードの追加)その2

1行の SQL文で、複数レコードを追加する場合の例です。ただし、前もって、ダミーテーブルを作成する必要があります。ダミーテーブルには、1つのレコードが必要になります。
ここでは、テーブル名「dummy」、フィールド名(列名)「AAA」(数値型)のダミーテーブルを作成

(※テーブル定義(フィールドの数、型等)はなんでも良い。ただしレコード数は1つだけにする。)

strSQL1 について(20行目~34行目)
20行目:INSERT INTO [テーブル名] ( [列名1], [列名2], ・・・ )
23行目:1つ目の追加するレコード(~27行目)
24行目:8 as ID, → [データ] as [列名]
25行目:’hanako’ as NAME, → [データ] as [列名]
26行目:’日本’ as CONTRY → [データ] as [列名]
29行目:2つ目の追加するレコード(~33行目)
(※ 1つ目のレコードと2つ目のレコードのフィールドは揃える必要があります。)
34行目:”]. as Qtmp” → 「.」は必要です。「Qtmp」任意の名前を指定します。


実行結果





UPDATE ステートメント(レコード変更)を実行する

【書式】

UPDATE target SET newvalue WHERE criteria


引数・戻り値

  • target  ・・・  変更するレコードのテーブル・クエリの名前を指定します。
  • newvalue  ・・・  変更するレコードのフィールド名(列名)、値を表すための式を指定します。
  • criteria  ・・・  対象となるレコードの抽出条件を指定します。ここで指定された条件を満たすレコードのみが変更されます。


サンプルVBAソース(レコードの更新)


実行結果





DELETE ステートメント(レコード削除)を実行する

【書式】

DELETE FROM table WHERE criteria


引数・戻り値

  • table  ・・・  削除するレコードのあるテーブル名を指定します。
  • criteria  ・・・  対象となるレコードの抽出条件を指定します。ここで指定された条件を満たすレコードのみが削除されます。



サンプルVBAソース(レコードの削除)


実行結果





Connection オブジェクトの Execute メソッドで、SQL文を実行

Connection オブジェクトExecute メソッドを使用すると、CommandText プロパティに指定したSQL文やクエリ等が実行されます。CommandText プロパティに結果を返す SQL文やクエリ等が指定された場合、新規の Recordset オブジェクトに保存されます。

Connection.Execute メソッド

【書式】

<取得>
Set recordset = object.Execute [ ( CommandText, RecordsAffected, Options ) ]

object.Execute [ CommandText, RecordsAffected, Options ]


引数・戻り値

  • object  ・・・  対象となる Connection オブジェクトを指定します。
  • recordset  ・・・  Recordset オブジェクトを表すオブジェクト変数です。Execute メソッドの実行結果、または、Nothing を取得します。
  • CommandText  ・・・  実行する SQL文を指定します。
  • RecordsAffected  ・・・  長整数型(Long)の変数を指定します。Execute メソッド実行操作によって影響を受けたレコードの数をこの変数に返します(つまり、更新クエリ・追加クエリ・削除クエリなどで変更のあったレコードの数、省略可)。
  • Options  ・・・  CommandText プロパティの評価を最適化するために使います。省略すると adCmdUnknown が指定されたと見なされます。


サンプルVBAソース(Select文の実行)


実行結果



サンプルVBAソース(Insert Into文の実行)


実行結果



サンプルVBAソース(Delete文の実行)


実行結果