ExcelWork.info

Excel(エクセル)のマクロ・VBA・関数・操作などのメモ

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

      2017/10/23

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


実行結果

Command.Execute Insert Into 文



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

1行の SQL文で、複数レコードを追加する場合の例です。ただし、前もって、ダミーテーブルを作成する必要があります。ダミーテーブルには、1つのレコードが必要になります。
ここでは、テーブル名「dummy」、フィールド名(列名)「AAA」(数値型)のダミーテーブルを作成
Dummy Table
(※テーブル定義(フィールドの数、型等)はなんでも良い。ただしレコード数は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」任意の名前を指定します。


実行結果

Command.Execute Insert Into 文 (複数)

Command.Execute Insert Into 文 (複数)2



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

【書式】

UPDATE target SET newvalue WHERE criteria


引数・戻り値

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


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


実行結果

Command.Execute Update 文 1

Command.Execute Update 文 2



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

【書式】

DELETE FROM table WHERE criteria


引数・戻り値

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



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


実行結果

Command.Execute Delete 文 1

Command.Execute Delete 文 2



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文の実行)


実行結果

Connection.Execute メソッド Select文



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


実行結果

Connection.Execute メソッド Insert Into 文



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


実行結果

Connection.Execute メソッド Delete文1

Connection.Execute メソッド Delete文2



 - データベース , , , , , , , , , , , , , , ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  関連記事

Update メソッド(ADO)
レコードの更新(ADO)Update メソッド

データベースのレコードを更新する Update メソッド カレントレコードの内容 …

Recordsetオブジェクト内のカーソル移動
カレントレコードの移動(ADO)MoveFirst、MoveLast、MoveNext、MovePrevious、Move

MoveFirst メソッド、MoveLast メソッド、MoveNext メソ …

CSVフィアルに接続(ADO)
CSVファイルに接続(ADO)

ADOでCSVファイルに接続 ADO を使用してCSVファイルを読み込みます。C …

Oracle(oo4o)接続サンプル1
データベース(Oracle)に接続する(oo4o)

oo4o 接続 OO4O(Oracle Objects for OLE)はWin …

ADOX テーブルの作成
テーブルの作成・削除/フィールドの作成・削除(ADOX)

ADOX を使用してテーブル・フィールド(列)を作成・削除 Table オブジェ …

RecordCount プロパティ(ADO)
Recordset オブジェクト内のレコード数(ADO)RecordCount プロパティ

RecordCount プロパティ Recordset オブジェクトのレコード数 …

データベース(SQLServer)接続
データベース(SQL Server)に接続する(ADO)

データベース(SQL Server)に接続 ODBC または OLE DB で接 …

ADOX クエリを作成
クエリの作成・削除(ADOX)

ADOX を使用してクエリを作成・削除 クエリを作成する手順 【書式】 <参照設 …

トランザクション01
トランザクション(ADO)BeginTrans、CommitTrans、RollbackTrans

ADO でのトランザクション処理 【書式】 Sub Sample_Transac …

ADOX インデックスを作成する1
インデックス、プロパティの設定(ADOX)

インデックスを作成する index オブジェクト 【書式】 <CreateObj …