vcpp-ml

29

[vcpp 00061012] #import を使用して Access2002 を利用する方法について

島野です。お世話になっております。

「#import ディレクティブ」について質問いたします。

VC++6.0 で #import を使用して Access 2002 を利用しようと考えています。

下記の情報によると、

■ INFO: Using Visual C++ to Automate Office
http://support.microsoft.com/support/kb/articles/q238/9/72.asp

Access 2002 のタイプライブラリは「MSACC.OLB」とのことでしたので、
「MSACC.OLB」が依存するタイプライブラリを #import してみました。

しかし、途中で、ADO 2.1 と ADO 2.5 のオブジェクト名がバッティングする
ようで、エラーが出てしまいました。

一応、rename("ADODB", "ADODB25") として、回避させましたが、
本当にこのような対応方法でよいのでしょうか?

---------------------------------------------------------------------
#import "C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll" \
        rename("EOF","EndOfFile") rename("BOF","BegOfFile")
#import "C:\Program Files\Common Files\Microsoft Shared\Office10\MSO.DLL"
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
#import "C:\WINDOWS\System32\msdatsrc.tlb"
#import "C:\WINDOWS\System32\MSCOMCTL.OCX"
#import "C:\Program Files\Common Files\system\ado\msado21.tlb" \
         rename("EOF", "adoEOF")
#import "C:\Program Files\Common Files\Microsoft Shared\Web Components\10\OWC10.DLL"
#import "C:\Program Files\Common Files\system\ado\msado25.tlb" \
         rename("EOF", "adoEOF") rename("ADODB", "ADODB25")
#import "C:\Program Files\Microsoft Office\Office10\MSACC.OLB" \
         rename("ADODB", "ADODB25")
---------------------------------------------------------------------

もしかしたら、もっとスマートな方法があるのでしょうか?
ご存知の方いらっしゃいましたら、ご教授よろしくお願い致します。

<環境>
Windows XP, VC++6.0, Access 2002

以上
--
28

[vcpp 00061011] Re: VC6でdBASE IVのテーブルをを開きたいのですが。

自己レスです。

CDaoDatabase DB;
DB.Open("drive:\\path",FALSE,FALSE,"dBASE IV;");

で開くことが出来ました。テーブルはまだ開けていませんけど...。

-- 
倉持 保彦 (k...@sector-net.co.jp)
28

[vcpp 00061010] VC6でdBASE IVのテーブルをを開きたいのですが。

お世話になります。倉持といいます。

表題の通り、dBASE IVで作られたテーブルをDAOを使って開こうとしましたが、
「'DATABASE=drive:\\path\\filetitle'は無効なパスです。パス名を正確に指定
しているか、またはファイルが属するサーバーに接続しているかを確認してくだ
さい。」というエラーメッセージが出力されて開くことが出来ません。MSDNでは
dBASE IVのテーブルもDAOで直接開くことが出来ると記述されていましたので、
Openする際のパラメータが違うものと思われますが、どのような指定をしたらよ
いか分からないのです。

CDaoDatabase DB;
DB.Open("DATABASE=drive:\\path\\filetitle",FALSE,FALSE,"dBASE IV;");
/*
DB.Open("DATABASE=drive:\\path",FALSE,FALSE,"dBASE IV;");
DB.Open("DATABASE=drive:\\path\\filename",FALSE,FALSE,"dBASE IV;");
DB.Open("DATABASE=drive:\\path\\filetitle.",FALSE,FALSE,"dBASE IV;");
DB.Open("DATABASE=drive:\\path\\",FALSE,FALSE,"dBASE IV;");
とやってみても同じでした。
*/

ご存知の方、アドバイスをよろしくお願いいたします。
-- 
倉持 保彦 (k...@sector-net.co.jp)
記事検索
Amazon.co.jp
  • ライブドアブログ