none
CurrentDb と CurrentProject について RRS feed

  • 質問

  • Access(2000~2007)使用です。

    ある処理を共通化しようと思っています。
    標準モジュールに作成し、その標準モジュールを各々のMDBに
    インポートしてもらう予定です。
    (標準モジュール使用の是非は置いておいてください。)

    環境等に依存しない作りにしたいです。
    ADO使用の人もいれば、DAO使用の人もいる為です。

    テーブルにデータを追加する処理ですが、
    ・CurrentDb.Execute
    ・CurrentProject.Connection.Execute
    どちらを使用した方が良いのでしょうか?

    レコードセットを使用しない限り、CurrentDbもCurrentProjectも
    ADOやDAOを参照設定しなくても動きますか?(パスやMDB名の取得等)
    また、それらを併用しても大丈夫でしょうか?

    初歩的な事かもしれませんが、宜しくお願い致します。
    2014年6月26日 2:13

回答

  • >・CurrentDb.Execute
    ・CurrentProject.Connection.Execute
    どちらを使用した方が良いのでしょうか?

    前者はDAOですし、後者はADOです。

    >ADO使用の人もいれば、DAO使用の人もいる為です。

    と書かれていますが、であれば、両方必要なのではないでしょうか?もっとも、

    >レコードセットを使用しない限り、CurrentDbもCurrentProjectも
    ADOやDAOを参照設定しなくても動きますか?(パスやMDB名の取得等)
    また、それらを併用しても大丈夫でしょうか?

    と書かれていますが、参照設定しなくても動きますので、どちらも使用できます。ただし、CurrentDbが返す型はDAOのDatabase型ですので、この型の変数を使用するには参照設定が必要になります。
    また、併用も可能です。

    ところで使用されているデータベースはJETtですか? JETであればDAOで統一して書いてしまえば良いと思います。一部、ADOではなければダメな場合もありますが、わずかです。また、DAOであれば、デフォルトで参照設定されていると思います。Access2007からはACEかつDAO12.0(それまではJETかつDAO3.6)に代わっていますので注意が必要かもしれません。もしAccess2007で動かなければDAO3.6を参照設定すれば良いと思います。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク hana0101 2014年6月30日 3:53
    2014年6月26日 5:45
    モデレータ

すべての返信

  • >・CurrentDb.Execute
    ・CurrentProject.Connection.Execute
    どちらを使用した方が良いのでしょうか?

    前者はDAOですし、後者はADOです。

    >ADO使用の人もいれば、DAO使用の人もいる為です。

    と書かれていますが、であれば、両方必要なのではないでしょうか?もっとも、

    >レコードセットを使用しない限り、CurrentDbもCurrentProjectも
    ADOやDAOを参照設定しなくても動きますか?(パスやMDB名の取得等)
    また、それらを併用しても大丈夫でしょうか?

    と書かれていますが、参照設定しなくても動きますので、どちらも使用できます。ただし、CurrentDbが返す型はDAOのDatabase型ですので、この型の変数を使用するには参照設定が必要になります。
    また、併用も可能です。

    ところで使用されているデータベースはJETtですか? JETであればDAOで統一して書いてしまえば良いと思います。一部、ADOではなければダメな場合もありますが、わずかです。また、DAOであれば、デフォルトで参照設定されていると思います。Access2007からはACEかつDAO12.0(それまではJETかつDAO3.6)に代わっていますので注意が必要かもしれません。もしAccess2007で動かなければDAO3.6を参照設定すれば良いと思います。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク hana0101 2014年6月30日 3:53
    2014年6月26日 5:45
    モデレータ
  • trapemiya様、ありがとうございます。

    今回はCurrentDb.Executeで行う事にしました。

    ADOやDAOの型の変数も使用しない為、参照設定も必要ないという事がわかりとても助かりました。


    > JETであればDAOで統一して書いてしまえば良いと思います。

    Access2000の時からですが、これからはADOだと思いADOを主に使用してきました。

    しかし、Access2007からはDAOが標準になったという認識でよろしいでしょうか?

    という事はDAOを主に使用した方が良いのでしょうか?

    またDAO≒ACEでしょうか?

    宜しくお願い致します。


    • 編集済み hana0101 2014年6月27日 7:20
    2014年6月27日 7:19
  • いつの時代でも、DAOはAccessを扱う上で最適です。

    >またDAO≒ACEでしょうか?

    ACEは、それまでAccessが使用していたJETデータベースエンジンの後継です。JETと完全な下位互換性があります。
    そのACEを扱うために、DAO、OLE DB、ODBCの3つのテクノロジーがあります。詳しくは以下が参考になると思います。

    (参考)
    Access 2010 を使用したデータ プログラミング
    http://msdn.microsoft.com/ja-jp/library/office/ff965871(v=office.14).aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年6月27日 7:56
    モデレータ
  • trapemiya様、ありがとうございます。

    やはりAccessにはDAOが一番なのですね。

    これからはDAOを使用していきたいと思います。

    またACEは、これから勉強して理解を深めていきたいです。

    ありがとうございました。

    2014年6月30日 3:53