エンジニアの仕事を始めて2ヶ月目の僕ですが、今月から初めてAccessのVBAに触れて四苦八苦していますw
Accessの需要は低いものだと勝手に思っていましたが、「昔から使ってる」「開発費用が安い」などの理由で、意外と開発の依頼は多いみたいですね…!
余談はさておき、AccessでSQL文(ADO)を実行する際、Openメソッドを使う場合とExecuteメソッドを使う場合があると思います。
正しく使わないとエラーになるケースもありますが、間違っていても案外動いたりするため、間違えて記述されているケースもあるみたいです。
僕も両者の違いがよくわからず、調べても難しい言葉で書かれていたりして、理解するのに結構苦労しましたw
他にも同じように悩む方がいらっしゃるかもしれませんので、今回はAccessでSQLを実行する際の「Open」と「Execute」の違いについて、噛み砕いて説明したいと思います。
スポンサーリンク
AccessでSQLを実行する際の「Open」と「Execute」の違い
結論からいうと、SELECT文の場合はOpen、それ以外のINSERT・UPDATE・DERETE文などはExecuteで実行すれば問題ありません。
Recordsetは値を受け取るものなので、値を返さない(DB側で処理されるだけの)SQL文は、OpenではなくExecuteで実行するのが正しいみたいです。
なのでSELECT文以外をOpenで実行するのは、本来であれば間違っているわけですね。
(ALTERやCREATEなんかもExecuteを使います)
場合によっては全部Openで実行しても動作しますが、コードを書き換えていくうちに動かなくなったりもします。
(恐らくレコードセットをCloseする段階でエラーが出るかと思います)
なので余計なエラーを避けるためにも、OpenとExecuteはきちんと使い分けるようにしましょう\(^o^)/