Windowsプログラム(VB.netやExcel VBAなど)からデータベースに接続する場合、ADO (ActiveX Data Object)を使用したコーディングが必要となります。
このコードは、外部データとの通信に不慣れなプログラマにとって、やや分りづらいものです。
そこで今回の記事では、中級者の方を対象として、Excel VBAを使用したデータベースアクセスの基本的な動作イメージを紹介したいと思います。
どのようなプログラムを組むにせよ、全体のデータフローがイメージできているか否かは、その後に進めるコード記述作業を、大きく左右すると考えます。
まず、全体の流れです。これは非常にシンプルです。
(1) 対象のデータベースに接続する。
データベースの形式は様々です。ファイル形式のものもあれば、データベースサーバとして独立したPCやサーバを立てている場合もあるでしょう。あるいは、Microsoft Shrepointなど メーカがサービスとして提供しているWEB上のデーがベースサーバもあります。
まずはじめに、これからクエリを発行したいデータベースを特定できる形で、データベースに接続要求を行うことが、最初に行う作業になります。
(2) データベースから接続応答が返ってくる。
接続要求を受けたデータベースサーバ(対象がファイルの場合はデータベースドライバ)から、接続を受け付けるか/否かの応答が返ってきます。
(1)項の接続要求にて、そのときに指定したユーザ名やパスワードなどの認証情報を元に、データベースサーバ(あるいはデータベースドライバ)が判断した結果となります。
うまく接続できない場合は、(1)接続要求で指定したパラメータに問題があることがほとんどです。Excel VBAで接続する場合は、www.connectionstrings.com を参考に、ConnectionStringを見直すと、うまくいくことが多い気がします。
(3) クエリを発行する
データベースに問題なく接続さえできれば、後はご希望のクエリを発行するだけです。
SELECT, INSERT, DELETE, UPDATEなど、対象のデータベースエンジンに応じたクエリを発行してください。
Excel VBAに限らず、プログラムを記述/実行しているPCは、ただクエリを発行して、その結果を受け取るだけですので、後はSQL文の世界です。
(4) クエリ結果を受け取る
クエリを発行すると、データベースサーバ(あるいはデータベースドライバ)は その応答を返します。SELECTクエリであれば、クエリ結果をデータテーブルなどのマトリクスデータを返します。INSERT, UPDATE, DELETEクエリなどであれば、OK/NGだけの単純な結果を返します。
データベースやドライバの種類によっては、エラーコードを返すものもあります。
このエラーコードは、クエリの誤りを調べる重要な手がかりになります。
(5) データベースから切断する
一連の処理が完了したら、データベースサーバから切断しておきます。
````````
以上のような流れで、Excel VBAからデータベースサーバにクエリを発行することができます。