dポイントプレゼントキャンペーン実施中!

お世話になります。当方、Windows Server 2003 R2 SP1 で IIS6.0 を使用しています。
サーバ側に設置しているmdbファイルをODBCでシステムDSNに登録し、ASPから
接続しております。
メンテナンスなどで直接mdbファイルを開いている時に、ASPのページに
アクセスすると以下のエラーメッセージが出て正常表示が出来なくなります。

========================================================
HTTP 500.100 - 内部サーバー エラー - ASP エラー
インターネット インフォメーション サービス
--------------------------------------------------------
エラー タイプ
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] '(不明)' は既に使用されているので、使用できませんでした。
========================================================

mdbファイルを直接開いても、ASP側でもエラー表示されないように
するにはどうしたらよいでしょうか?

ソースは以下のようにしております。

Set cnn=Server.CreateObject("ADODB.Connection")
cnn.open "dummy"
cnn.close
cnn.open "testdb"  '// ODBCをtestdbにしています。
SQL = "SELECT * FROM M_USER ORDER BY USERID"
Set rs1 = cnn.Execute(SQL)

よろしくお願いいたします。

A 回答 (1件)

エラートラップを仕掛けておいて回避するといった方向でしょう



On Error Resume Next
Set cnn=Server.CreateObject("ADODB.Connection")
On Error Goto 0
if not cnn is nothing then
  cnn.open "dummy"
  cnn.close
  cnn.open "testdb"  '// ODBCをtestdbにしています。
  SQL = "SELECT * FROM M_USER ORDER BY USERID"
  On Error Resume Next
  Set rs1 = cnn.Execute(SQL)
  On Error Goto 0
  if not rs1 is nothing then
    ' 正常に読み込めた場合の処理
  else
    ' 何かのエラーが起きた場合
  end if
else
  ' 何かのエラーが起きた場合
end if
といった具合に トラップを仕掛ける範囲を限定して対処してみましょう
cnn.Open でエラーになっているなら
on error resume next
cnn.Open "testdb"
if err.number<>0 then
  ' Open失敗時の処理
end if
on error goto 0
といった具合かと

この回答への補足

エラーの件、自己解決しましたのでご報告いたします。
mdbファイルを設置しているディレクトリのアクセス権限が
ないことによる現象だったようです。
テスト的に、Usersにフルコントロールを設定したところ、
直接mdbファイルを開いていても、asp側で問題なくOpenできました。
#ただ、直接mdbファイルを開いていない時は問題なくasp側でOpenが
 出来ていて、なぜUsersに権限がないと直接開いている時にエラーに
 なるのかはよくわからないままです…。

今回はたまたま解決できましたが、いつ原因不明のエラーと出くわすか
わからないので、redfox63様のご回答どおり、エラートラップも
ちゃんと対応していきたいと思います。

この度は本当にありがとうございました。

補足日時:2009/05/11 13:42
    • good
    • 0
この回答へのお礼

redfox63様、ご回答ありがとうございます。
エラートラップでエラー表示そのものは回避できるかと思いますが、
今回は、asp側でのエラーの根本的な解決をしたいと考えております。
曖昧な情報で申し訳ないのですが、現在のサーバにリプレイスする前は
直接mdbファイルを開いていても、asp側でも正常にOpen出来ていたため、
排他で開かない設定方法があるのではないかと思い、ご相談した次第です。
リプレイス前と現在はプログラムソースは変更ありませんので、
ODBCの設定で何かあるのかと思ったのですが…。

お礼日時:2009/05/11 11:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!