2013年3月16日土曜日

ADODBでE_FAILなとき

レガシーシステム健在なり!えぇVB6です。
これまで何年も安定して動作していたシステムがエラーになるという報告を受けました。
さて、デバッグしてみますと、以下のようなエラーと判明

「データプロバイダまたはほかのサービスが、E_FAIL 状態を返しました。」


なんのことやら…


mlng_RecordCount = adoRS.RecordCount ←ここでエラーです。


まず疑うのは、データですね。

がしかしよくわかりません。

ネットでは「日付型」がキーのようですが、「日付型」は使用していませんし・・・

いろいろ調べていると


adoRs.CursorLocation = adUseClient

カーソル、これがどうやら原因のような記事がありました。
これをサーバカーソルにしてみると、あら不思議!


adoRs..CursorLocation = adUseServer



問題が解決したような感じがしますが、結果オーライなので
気持ち悪いです。

MDACのバージョンか?
http://support.microsoft.com/kb/301202/ja

レジストリキーはこちら
HKEY_LOCAL_MACHINE\Software\Microsoft\DataAccess\FullInstallVer

バージョンは、6.0.6002.18005 です。

MDAC は2.8までで、vista以降 Windows DAC となりバージョンは6へ!

これも違う。

そしてやっとわかりました!!!

フィールドの型が変更されていました。orz

従来の型に直すと問題なく動作します。
カーソルタイプも従来のままです。
ここはインパクト大なのでさわらずにフィールド型を従来にあわせる方法をとることにします。

原因特定できてよかったよかった^^

0 件のコメント:

コメントを投稿