- ベストアンサー
IIS7.0とASPを使ってMDBファイルを参照する方法
- IIS7.0とASPを使用してMDBファイルを参照する方法についてのエラー解決方法を教えてください。
- IIS7.0とASPを使ってMDBファイルを参照する際に発生するエラーで、HTTP500内部サーバーエラーが表示されます。
- MDBファイルを参照するためのVBScriptコードにおいて、Point002とPoint003の間にエラーがあります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
mesomokyuさん、こんにちは。 nas02です。 どうも、Vistaでは設定が変わっているみたいですね。 最初の接続文字列からすると、下記サイトからダウンロードできる「2007 Office system ドライバ: データ接続コンポーネント」は インストールしてあるのでしょうか? http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=7554f536-8c28-4598-9b72-ef94e038c891 それでしたら、接続文字列のProviderを"Microsoft.ACE.OLEDB.12.0"に設定すれば、良いと思いますがいかがでしょうか? ※"Microsoft.ACE.OLEDB.12.0"がレジストリに登録されてあるか、レジストリエディタ(regedit)で検索してチェックすると確実です。 もし、未インストールで上記のコンポーネントはインストールしないという事でしたら、レジストリから接続文字列を調べる必要があります。 1.「c:\windows\system32\」のフォルダ以下を「msjet」で検索して以下のモジュールがあることを確認します。 ・msjet40.dll ・msjetoledb40.dll → これがなかったら、素直に上記のモジュールをインストールしましょう。 2.レジストリエディタ(regedit)を起動して、マイ コンピュータから「msjetoledb40.dll」を検索します。 因みにXPでは、以下の場所がヒットします。(複数ヒットしますが、「OLE DB Provider」が同列にある方を調べます) "HKEY_CLASSES_ROOT\CLSID\{dee35070-506b-11cf-b1aa-00aa00b8de95}\InprocServer32" 3.次に、一つ上の場所をクリックします。 XPでいえば、 "HKEY_CLASSES_ROOT\CLSID\{dee35070-506b-11cf-b1aa-00aa00b8de95}" です。 そこの(既定)にデータが入っていますので、その文字列をコピーします。 XPの場合は、「(既定):Microsoft.Jet.OLEDB.4.0」となっています。 4.コピーした文字列で、最初から検索します。(3.でヒットする「HKEY_CLASSES_ROOT\CLSID」や下位にCLSIDがないのは無視します) XPの場合は、以下の場所がヒットします。 "HKEY_CLASSES_ROOT\Microsoft.Jet.OLEDB.4.0" 上記のヒットしたデータのキーから「HKEY_CLASSES_ROOT\」を抜いた値を接続文字列に使います。(多分、3.の値と同じ可能性あり) ※Vistaがどんな設定になっているのか非常に興味ありますので、もし分りましたら教えて下さい。 Vistaを持ってないのでこれ以上は調べられませんが、多分これでいけると思います。
その他の回答 (2)
- nas02
- ベストアンサー率70% (22/31)
mesomokyuさん、こんにちは。 nas02です。 先程の回答のレジストリから接続文字列のプロパイダを調べる方法ですが、オブジェクト生成の名称を調べる方法とごっちゃになってる様な気がしました。 調べるのは3.までで良いと思います。 3.もトップの値を使うのか、ProgIDの値を使うのか迷う所でありますが。。。 ご検討お祈りします。
お礼
nas02さんこんばんわ すみません。最終的にどうなったか書くのを忘れていました。 無事にDBの開く事ができました。nas02さんには本当に感謝しています。ありがとうございました!! 理由はよくわからないのですが、「2007 Office system ドライバ: データ接続コンポーネント」をインストールした後で接続文字列を「Microsoft.Jet.OLEDB.4.0」で試してみたらうまくいきました。 因みに「Microsoft.ACE.OLEDB.12.0」でも大丈夫みたいです。 最後まで的確なアドバイスありがとうございました。
- nas02
- ベストアンサー率70% (22/31)
接続文字列の指定が間違っているのではないでしょうか? 以下のサイトが参考になると思います。 http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpado260/htm/mdrefjetprovspec.asp http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpado260/htm/mdmthopenclosevbscriptx.asp Objconn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath(DB_Pass) ↓ Objconn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.Mappath(DB_Pass) 又は Objconn.Provider = "Microsoft.Jet.OLEDB.4.0" Objconn.open Server.Mappath(DB_Pass) ※動作環境がないので試してません。
補足
nas02さん回答ありがとうございました。 教えられたとおりやってみましたが、どの場合もObjconn.openの部分でエラーになってしまいます。 そのほかやってみた事 1、パスを指定する部分を絶対パスで指定。 2、データベースを開く部分のプログラムをサブルーチンではなく直接書いてみた。 (質問の欄には書いていませんでしたがデータベースの開け閉めなどはサブルーチンにしています。) 結果は1、2どちらもObjconn.openの部分でエラーになりました。 同じプログラムをIIS5.0で動かすとエラーも出ないで表示されるのですが・・・。 今回はどうしてもIIS7.0を使ってWebサイトを作る必要があるので、よろしくお願いします。
お礼
nas02さんこんばんわ 回答ありがとうございました。 レジストリエディタで接続文字列を調べました。 以下は場所と結果です。 1、C:\Windows\system32\以下を「msjet」で検索。 結果 msjet40.dll msjetoledb40.dll がヒットしました。 2、レジストリエディタで「msjetoledb40.dll」を検索。 結果 HKEY_CLASSES_ROOT\CLSID\{dee35070-506b-11cf-b1aa-00aa00b8de95}\InprocServer32 でヒット。(Vistaでは一つだけでした。環境によって違うかもしれませんが・・・) (既定)のデータは「C:\Windows\system32\msjetoledb40.dll」となっていました。 3、ひとつ上の場所。(HKEY_CLASSES_ROOT\CLSID\{dee35070-506b-11cf-b1aa-00aa00b8de95}) 結果 (既定)のデータは「Microsoft.Jet.OLEDB.4.0」となっていました。 4、レジストリエディタで「Microsoft.Jet.OLEDB.4.0」を検索。 結果 HKEY_CLASSES_ROOT\.Job でヒット。 (既定)のデータは「JobObject」となっていました。 調べた結果 4 以外は XP とほとんど同じだったのでスムーズに進めることができました。