たむら です。
助田 雅紀	 <masaki.suketa / systemplaza.co.jp> さん、こんにちは。

        Tue, 3 Aug 1999 08:29:57 +0900 の
        [ruby-list:15844] Re: alias new open
        に関するメールのリプライです。

助田> > DAO 3.5の場合は
助田> > dao = WIN32OLE.new('DAO.DBEngine.35') として動かしました。
助田> 
助田> >  Office2000では DAO 3.6になると聞いていますが、その辺りの Wrapはどのよう
助田> > にされる予定ですか?
助田> 
助田> 解決にも何にもなってないんですが,DAO には,VersionIndependentProgID 
助田> は用意されてないんでしょうか?

DAO の場合、DAO.DBEngine だと、
『Microsoft DAO 2.5/3.0 Object Library DBEngine』となるみたい。
.36 / .35 はそれぞれ、Version 3.6 /3.5 です。
ということで、これで逃げてみました。

    %w( .36 .35 nil).each do |v| # 3.6|3.5|3.0
      begin
        @dao = WIN32OLE.new('DAO.DBEngine'+ v)
        @dao_version = (v or '3.0')
        break
      rescue
        next
      end
    end

新しいやつから探して、見つかればそれを利用します。
Registryから、探すよりもカンタンだったので。
# じゃあ、3.7 とか出たら、どうしよう…

ちなみに、VB6 は DAO 3.6 なので、
DAO 3.6 on Win95OSR2
DAO 3.0/3.5/3.6 on WinNT4WS で、動作確認は取れてます。

                    --------------------------------------------------
                      トランス・コスモス株式会社 福岡支社システム課
                                                  田村 賢一
                         tamura / fko.trans-cosmos.co.jp
                         t9655832 / aar.trans-cosmos.co.jp
                                  ** ruby-1.3.6 リリース **
                    --------------------------------------------------