Excel VBA ADOを使用してレコードの操作をするSQL文を実行する

スポンサーリンク

レコードの操作するSQL文を実行する方法

ADO(ActiveX Data Objects【アクティブエックスデータオブジェクツ】)でSQL文を実行するには、
Command【コマンド】オブジェクトExecute【エクスキュート】メソッドを使用します。Execute【エクスキュート】は「実行」という意味があります。

「実行」する準備として外部データベースとの接続が確立されているConnection【コネクション】オブジェクトのActiveConnection【アクティブコネクション】プロパティを指定し、実行したいSQL文をCommand【コマンド】オブジェクトのCommandText(コマンドテキスト】プロパティに指定します。

SQL文とは

SQLとは、データベースのデータに対する問い合わせを行う言語で、この言語使用にそって記述されたステートメントをSQL文といいます。SQLはシンプルな構文なのでわかりやすく、外部データの種類が違ってもほぼ同じ書式でSQL文を記述できるので大変便利です。ここでは、レコードを操作する主なSQL文について説明します。


ActiveConnection【アクティブコネクション】プロパティ

指定した Command 【コマンド】オブジェクトが、現在どの Connection 【コネクション】(接続)オブジェクトに属するかを示すにはCommand【コマンド】オブジェクトのActiveConnection【アクティブコネクション】プロパティを使用します。

ActiveConnection【アクティブコネクション】プロパティの書式と設定値の説明

オブジェクト変数.ActiveConnection = Connectionオブジェクト変数

  • オブジェクト変数(必須)
    Command【コマンド】オブジェクトのインスタンス(複製)が格納されている、オブジェクト変数を指定します。
  • Connectionオブジェクト変数(必須)
    接続が確立しているConnection【コネクション】オブジェクトのインスタンスが格納されているオブジェクト変数を指定します。

CommandText【コマンドテキスト】プロパティ

実行したいSQL文を設定するには、Command【コマンド】オブジェクトのCommandText【コマンドテキスト】プロパティを使用します。

CommandText【コマンドテキスト】プロパティの書式と設定値の説明

オブジェクト変数.CommandText = SQL文


SQL文の記述ルール

  1. SQL文は全体を「”」ダブルクォーテーションで囲みます。
  2. 各キーワードは半角スペースで区切るSQL文を構成するキーワードは半角スペースで区切って記述します。
  3. SQL文の末尾に「;」セミコロンを記述する接続する外部データベースの種類がAccess【アクセス】、Oracle【オラクル】の場合はSQL文の末尾に「;」セミコロンを記述します。
  4. 文字列は「’」シングルクォーテーションで囲む条件式に文字列を使用する場合は文字列を「’」シングルクォーテーションで囲みます。

SELECT【セレクト】文の書式と設定値の説明

[]内は省略可能です。
SELECT FROM [WHERE]

  • SELECT【セレクト】(必須)
    データを抽出するフィールド名を指定します。複数のフィールドを指定する場合は「,」カンマで区切ります。すべてのフィールドを指定する場合は「*」ワイルドカードが使用できます。
  • FROM【フローム】(必須)
    抽出するデータがあるテーブル名を指定します。
  • WHERE【ウェア】(省略可)
    レコードを抽出する条件式を指定します。条件式についてはこちらをご覧ください。省略した場合はSELECTで指定したフィールドのすべてのレコードが抽出されます。

(例)「商品マスター」テーブルから「商品名」フィールドの「A商品」のレコードの「商品コード」と「商品名」、「仕入れ単価」を抽出する書式

SELECT 商品コード,商品名,仕入れ単価 From 商品マスター WHERE 商品名='A商品';

(例)「商品マスター」テーブルから「商品名」フィールドの「A商品」のすべてのレコードを抽出する書式

SELECT * From 商品マスター WHERE 商品名='A商品';

SELECT文を使用したコード例


UPDATE【アップデイト】文の書式と設定値の説明

[]内は省略可能です。
UPDATE SET [WHERE]

  • UPDATE【アップデイト】(必須)
    修正するレコードがあるテーブル名を指定します。
  • SET【セット】(必須)
    修正するフィールド名と修正データを指定します。書式は「修正するフィールド名=修正データ」で複数指定する場合は「,」カンマで区切ります。
  • WHERE【ウェア】(省略可)
    レコードを抽出する条件式を指定します。条件式についてはこちらをご覧ください。省略した場合はすべてのレコードがSETで指定したフィールドのデータに修正されます。

(例)「商品マスター」テーブルから「商品名」フィールドの「A商品」のレコードの「仕入れ単価」を700円「販売単価」を1400円に修正する書式

UPDATE 商品マスター SET 仕入れ単価=700,販売単価=1400 WHERE 商品名='A商品';

UPDATE文を使用したコード例


INSERT【インサート】文の書式と設定値の説明

INSERT INTO VALUES

  • INSERT INTO【インサートイントゥ】(必須)
    レコードを追加するテーブル名とフィールド名を指定します。テーブル名の後にフィールド名をカッコで囲みフィールド名を「,」で区切って指定します。書式は「テーブル名(フィールド名1,フィールド名2,・・・・)」
  • VALUES【バリューズ】(必須)
    各フィールドに設定するデータを指定します。カッコで囲み、各データは「,」カンマで区切って指定します。書式は「(入力データ1,入力データ2・・・・・・・)」

(例)「商品マスター」テーブルに「商品コード」「商品名」「仕入れ単価」「販売単価」のレコードにデータを追加する書式

INSERT INTO 商品マスター (商品コード,商品名,仕入れ単価,販売単価)VALUES('001100','K商品',200,400);

INSERT文を使用したコード例


DELETE【デリイト】文の書式と設定値の説明

[]内は省略可能です。
DELETE FROM [WHERE]

  • DELETE FROM【デリイトフローム】(必須)
    削除するレコードがあるテーブル名を指定します。
  • WHERE【ウェア】(省略可)
    削除するレコードを抽出する条件式を指定します。条件式についてはこちらをご覧ください。
    省略した場合はDELETE FROMで指定したテーブルのすべてのレコードが削除されます。

(例)「商品マスター」テーブルの「商品名」フィールドの「K商品」のレコードを削除する書式

DELETE FROM 商品マスター WHERE 商品名='K商品';

Execute【エクスキュート】メソッド

ADOを使用してSQL文を実行するには、Command【コマンド】オブジェクトのExecute【エクスキュート】メソッドを使用します。

Execute【エクスキュート】は実行という意味がありActiveConnection【アクティブコネクション】プロパティで接続しているテーブルを設定しCommandText【コマンドテキスト】プロパティに実行するSQL文を設定したあとに記述します。

Execute【エクスキュート】メソッドの書式と設定値の説明

【SQLが更新系の場合(値を受け取らない場合)】
オブジェクト変数.Execute
【SQLが抽出系の場合(値を受け取る場合)】
Set オブジェクト変数 = オブジェクト変数.Execute

  • オブジェクト変数
    Command【コマンド】オブジェクトのインスタンス(複製)が格納されている、オブジェクト変数を指定します。
  • Set オブジェクト変数
    SQLで抽出されたデータを代入するRecoedset【レコードセット】オブジェクトのインスタンスが格納されているオブジェクト変数をSet【セット】ステートメントを使用して設定します。

以上で、ADOを使用してレコードの操作をするSQL文を実行する方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告