Windows95環境でのDAO接続について – プログラミング – Home

Windows95環境でのDAO接続に...
 
通知
すべてクリア

[解決済] Windows95環境でのDAO接続について


きゅあ
 きゅあ
(@きゅあ)
ゲスト
結合: 15年前
投稿: 8
Topic starter  

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
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

DAO関係なしに
Visual Studio 2005 は Windows95上での動作をサポートしていないようですが大丈夫で
しょうか?

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


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

訂正
>Visual Studio 2005 は
Visual Studio 2005 で作成された実行ファイルは


返信引用
きゅあ
 きゅあ
(@きゅあ)
ゲスト
結合: 15年前
投稿: 8
Topic starter  

>Visual Studio 2005 は Windows95上での動作をサポートしていないようですが大丈夫で
しょうか?

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

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

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


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

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

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


返信引用
きゅあ
 きゅあ
(@きゅあ)
ゲスト
結合: 15年前
投稿: 8
Topic starter  

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

ごもっともです。

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

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


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

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

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

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


返信引用
きゅあ
 きゅあ
(@きゅあ)
ゲスト
結合: 15年前
投稿: 8
Topic starter  

Blueさん、すばやいご回答ありがとうございます。

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

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

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

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

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


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

Win95 の関係はすでに話が出ているとおりだと思うのでおいといて

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

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

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


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

既に手遅れになっているようですが(vv;)・・・

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました