Windows95環境でのDAO接続について

[戻る]
きゅあ 2009/09/10(木) 15:50:45
DAO接続でMDBファイルをOPENしてグリッドに表示するアプリを開発しています。
VC++2005でビルドしたexeをWindows95で実行すると、
「Command Failed.」エラーが発生します。

【開発環境】
OS:WindowsXP SP3(日本語版)
言語:VC++2005(MFC)(英語版)
DB:MSAccess97(日本語版)

【動作環境】
OS:Windows95(英語版)
DB:MSAccess97(英語版)


ソースは以下の通りです。
----------------------------------------------------
    (...略)

    CDaoDatabase oDatabase;        // DataBase
    
    // DB接続
    oDatabase.Open("C:\Temp\TEST.mdb");

    // レコードセットOPEN
    CDaoRecordset rs(&oDatabase);
    rs.Open(dbOpenDynaset, psQuery, dbReadOnly);

    (...略) 
----------------------------------------------------

DB接続で失敗していることは推測できましたが、
何のエラーが発生いるかが分からないので、
例外処理を追加しました。↓

----------------------------------------------------
    (...略)

    CDaoDatabase oDatabase;        // DataBase
    
    // DB接続
    try {
        oDatabase.Open("C:\Temp\TEST.mdb");
    }
    catch( CDaoException  *e ){
        CString sErrStr;
        TCHAR   szCause[255];
        sErrStr.Format("%s[0x%X]", CString(szCause), e->m_scode);
        AfxMessageBox( sErrStr );
        e->Delete();
        return FALSE;
    }

    // レコードセットOPEN
    CDaoRecordset rs(&oDatabase);
    rs.Open(dbOpenDynaset, psQuery, dbReadOnly);

    (...略) 
----------------------------------------------------

実行して表示されたメッセージ文字列部分(szCause)が、
言語の問題(?)のせいか、文字化けしてしまっています。。。
e->m_scodeのエラーコードは「0x80040154」と表示されました。
(10進だと、-2147221164です。念のため。。。)

WEBで調べてみると、0x80040154はクラスが無いといったエラーのようですが、
CDaoDatabaseクラスが存在しないと解釈すべきでしょうか?

VC++6.0でビルドしたexeは、Windows95環境で正常にDB接続できています。
また、VC++2005でビルドし、XP(SP3)で実行しても、正常に動作します。
このことから、CDaoDatabaseクラスが存在しないとは考えにくいのです。

VC++2005でビルドしたDAO接続が
Windows95でできない理由・対策方法・助言など、
よろしくお願いします。

Blue 2009/09/10(木) 16:00:59
DAO関係なしに
Visual Studio 2005 は Windows95上での動作をサポートしていないようですが大丈夫で
しょうか?

[MSDN]サポートされるプラットフォーム (Visual C++)
http://msdn.microsoft.com/ja-jp/library/ms235435%28VS.80%29.aspx

Blue 2009/09/10(木) 16:01:40
訂正
>Visual Studio 2005 は 
Visual Studio 2005 で作成された実行ファイルは

きゅあ 2009/09/10(木) 16:08:28
>Visual Studio 2005 は Windows95上での動作をサポートしていないようですが大丈夫で
しょうか?

はい、承知の上(?)で開発を進めています。

エンドユーザーのほうから、
Windows95で動作するもの、と要求が出てきます。

いろいろ検討したのですが、
VC++2005を使用するという結論に至りました。

Blue 2009/09/10(木) 16:11:44
>いろいろ検討したのですが、
>VC++2005を使用するという結論に至りました。
なぜ?
サポートしていない以上正しく動く保証はないと思いますけど。
>Windows95で動作するもの、と要求が出てきます。
要求を満たせないし。


VC++6.0があるのであれば、そちらでビルドできるようにして実行ファイルを作るべきな
んじゃないでしょうか?

きゅあ 2009/09/10(木) 16:22:28
>VC++6.0があるのであれば、そちらでビルドできるようにして実行ファイルを作るべきな
>んじゃないでしょうか?

ごもっともです。

できればそうしたいところなのですが、
困ったことに、
ソースを含む開発環境も購入して納品する必要があるのです。。。
(実行ファイルだけならば、VC++6.0でも全く問題ないところです。)

となると、現在購入可能な開発環境という点で、
現在当方で購入済みの、VC++2005を選択しました。

Blue 2009/09/10(木) 16:27:56
どうやっても無理なのでは?
たとえ”動いているようにみえても”、実は裏で不正な動きをするかもしれないし、
OSがイカレタって保証はできないんじゃないでしょうか?(憶測ですけど)


顧客にそのことをきちんと話して、別途VC++6.0の開発環境も購入分を請求するか、
それができないのであれば、95はあきらめてくださいと伝えるしかないのでは?


もとから95をターゲットにしていた場合は2005で開発をスタートしたほうに非があると思
いますが、あとから95もっていう場合はまた話が違うと思います。

きゅあ 2009/09/10(木) 16:39:00
[[解決]]
Blueさん、すばやいご回答ありがとうございます。

>顧客にそのことをきちんと話して、別途VC++6.0の開発環境も購入分を請求するか、
>それができないのであれば、95はあきらめてくださいと伝えるしかないのでは?

Windows95を諦めてもらうのは難しいようです。
一度打診したらしいのですが、
それなら新しいマシンを買ってくれ(約20台分)と言われたそうです。。。

そうなると、Windows95環境でも動作保証のある、
VC++6.0を購入することを検討してみたいと思います。

ここは解決とさせて頂き、
また何か疑問がありましたら質問させて頂きます。

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

tetrapod 2009/09/10(木) 18:02:34
Win95 の関係はすでに話が出ているとおりだと思うのでおいといて

> oDatabase.Open("C:\Temp\TEST.mdb");
本当にこんなこと書いているのなら動かないのが当然。

> TCHAR   szCause[255];
> sErrStr.Format("%s[0x%X]", CString(szCause), e->m_scode);
> AfxMessageBox( sErrStr );
本当にこんなこと書いているのなら動かないのが当然。

勉強不足としか思えない・・・

仲澤@失業者 2009/09/10(木) 21:09:03
既に手遅れになっているようですが(vv;)・・・

Visual Studio 6.0も 出荷は終了しているようです。
その他をかんがみても、きゅあさんの目論見は著しく
困難であると考えられます。

古いスレッドには追加発言できません。