• 締切済み

AccessVBAにおけるADOとSQLについて

AccessVBA(Ver.2000)を使用しております。 ADOとSQLを市販のテキストで最近学び始めたばかりの者です。 調べ方が悪いのか、疑問なので教えてください。 例えばテーブルデータの更新をする際にSQLとADOのいずれでも可能かと思いますが、両者の違いはあるのでしょうか? こういう場合はSQL、こういう場合はADOを使用するのが良いというのがあるのであれば教えていただけたらと思います。 どうぞよろしくお願いいたします。

みんなの回答

  • t2hayashi
  • ベストアンサー率46% (102/219)
回答No.2

違いは基本的にありません。 スピードの違いは少々あります。 数百万件というようなDBでパフォーマンスチューニングが必要であれば シビアに追求すべきかもしれませんがそこまで大きくないものであれば コードがスマートになるほうで書けばいいかと思います。

hy0423
質問者

お礼

t2hayashiさん、2度にわたる回答ありがとうございます。 基本的な違いはないのですね。 まだテスト段階なので、少ないデータでしかテストしてませんが、実際に動かす段階になっても多くて4000件程度のデータで運用します。 書きやすい方でやろうと思います。 本当に、ありがとうございました。

  • t2hayashi
  • ベストアンサー率46% (102/219)
回答No.1

イマイチ質問の意味がわからないのですが SQLExecuteしても同じジャン?みたいなことでしょうか。 であればADOやDAOを使うのはレコードセットを使いたいとき、 あるいは複雑な処理やループ処理をしたいときでしょうね。 個人的にはテーブルをdeleteするとかDropするとか、そういう 大雑把な処理のときのみSQLExecuteを使います。 どちらのが早いかは検証していません。

hy0423
質問者

お礼

t2hayashiさん、私の説明不足な質問に答えていただきありがとうございました。 少し補足させていただきましたが、わかりづらい場合遠慮なくご指摘ください。

hy0423
質問者

補足

不足があり、申し訳ありません。 疑問に思ったのは、(1)Docmd.RunSQLを行うのと、(2)ADOでデータを変更したりする操作の違いです。 (「SQLExecuteしても同じジャン?みたいなことでしょうか。」とおっしゃっていたことかと思います) 例えば、 ・(1)でUpDateステートメントを使って処理するのと、(2)でUpDateメソッドを使う。 ・(1)でDeleteステートメントを使うのと、(2)でExecuteメソッドでDeleteのSQL文を実行する。 などがどのように違うのかと思いました。 何か、「こういう時はDocmd.RunSQLの方が良い」、「この場合はADOを使った方がいい」というのがあるのかと思ったのです。

関連するQ&A