- PR -

ADODBのエラーです。

1
投稿者投稿内容
406
会議室デビュー日: 2005/12/08
投稿数: 2
投稿日時: 2005-12-08 22:29
はじめて質問させて頂きます。

IIS4とACCESS2000とASPでバイナリデータ(画像)の入出力を行うスクリプトを動作させていたのですが、突然

ADODB.Command エラー '800a0bb9'

引数が間違った型、または許容範囲外であるか、競合しています。

が出てしまうようになりました。
プログラムのバグかと思い格闘しましたが切り分けていった結果



Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Provider="Microsoft.Jet.OLEDB.4.0"
objConn.Open(Server.MapPath("db.mdb"))
Set objCmd = CreateObject("ADODB.Command")
objCmd.ActiveConnection = objConn

strSQL = "SELECT * FROM recruit"
objCmd.CommandText = strSQL
' objCmd.CommandType = adCmdText
objCmd.CommandTimeout = 30

Set objRs = CreateObject("ADODB.Recordset")
objRs.CursorType = adOpenStatic

' objRs.LockType = adLockOptimistic
objRs.Open objCmd

上記のコメントアウトしているところで発生しています。
上をコメントアウトすると下の方でエラーが発生します。そのときはRecordsetエラーです。
それにあわせて上記の同じスクリプトを使っている他のスクリプト(DBも別です)まで同じエラーが発生しています。

切り分け中に何度もトライしている途中、1回だけエラーが起きなかったのもすごく引っかかります。
なにかシステム上の問題のように思えますが、確認すべき項目などありましたらご教授願えたら幸いです。

よろしくお願いします。
ue
ぬし
会議室デビュー日: 2005/05/07
投稿数: 581
お住まい・勤務地: 広島市
投稿日時: 2005-12-10 18:01
こんにちは。
ASPプログラミングの経験が無い人間の意見ですが。

adCmdText や adLockOptimistic といった定数をASPの実行エンジンが理解
出来ていないのが原因ではないでしょうか。

定数を宣言するか、定数の代わりに定数に対応したenum値(数字)をプロパティに
代入すれば動く気がします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-10 20:03
Google 検索結果

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
406
会議室デビュー日: 2005/12/08
投稿数: 2
投稿日時: 2005-12-11 22:21
ue さん>
じゃんぬねっと さん>

ご返事ありがとう御座います。
あれからさらに格闘を続けまして、結果から言いますとなんとか復旧いたしました。

問題なく動いていたソースが、いきなり初歩的に動かなくなってしまったので、とても困惑しました。
何か、ADODBのトラブルのような気がしてgloval.asaの中身を
<!--METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library"
TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->
だったのを一旦2.7に書き換えましたら、違うlibが違うといった内容のエラーになりましたので元に戻したら何事もなかったかのように動き出しました・・・。(同時に動かなくなっていた他のスクリプトもです。)


結局何がエラーの原因だったのか定かではないのですが、IISやOSの再起動では変化がなかったのですが、global.asaの書き換えで何かが正常に戻ったのかどうかといったところでしょうか。
一時的に何らかの原因でクラッシュしていたのかもしれません。

少し動作を見守って見たいと思います。

ありがとう御座いました。
1

スキルアップ/キャリアアップ(JOB@IT)