みなさんこんばんわ。
IIS7.0 と ASP を使ってMDBファイルを参照したいのですが、
エラーが出て、ページを開くことが出来ません。
エラー表示は HTTP500内部サーバーエラー と表示されます。
エラーでとまる部分は以下コードの Point002 と Point003 の間です。
Response.Write "<p>Point001"
Set Objconn = Server.CreateObject("ADODB.Connection")
Response.Write "<p>Point002"
Objconn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath(DB_Pass)
Response.Write "<p>Point003"
StrSQL="select * from " & Table_Name
Set Objrs = Server.CreateObject("ADODB.Recordset")
Response.Write "<p>Point004"
Objrs.Open StrSQL, ObjConn
Response.Write "<p>Point005"
ODBC を使う方法もあるようですが今回は ODBC を使わないでMDBファイルを参照したいのです。
よろしくお願いします。
環境
OS→Windows Vista Ultimate
Access→Access2000
IIS→IIS7.0
使用言語→VBScript
No.2ベストアンサー
- 回答日時:
mesomokyuさん、こんにちは。
nas02です。
どうも、Vistaでは設定が変わっているみたいですね。
最初の接続文字列からすると、下記サイトからダウンロードできる「2007 Office system ドライバ: データ接続コンポーネント」は
インストールしてあるのでしょうか?
http://www.microsoft.com/downloads/details.aspx? …
それでしたら、接続文字列の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を持ってないのでこれ以上は調べられませんが、多分これでいけると思います。
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 とほとんど同じだったのでスムーズに進めることができました。
No.3
- 回答日時:
mesomokyuさん、こんにちは。
nas02です。
先程の回答のレジストリから接続文字列のプロパイダを調べる方法ですが、オブジェクト生成の名称を調べる方法とごっちゃになってる様な気がしました。
調べるのは3.までで良いと思います。
3.もトップの値を使うのか、ProgIDの値を使うのか迷う所でありますが。。。
ご検討お祈りします。
nas02さんこんばんわ
すみません。最終的にどうなったか書くのを忘れていました。
無事にDBの開く事ができました。nas02さんには本当に感謝しています。ありがとうございました!!
理由はよくわからないのですが、「2007 Office system ドライバ: データ接続コンポーネント」をインストールした後で接続文字列を「Microsoft.Jet.OLEDB.4.0」で試してみたらうまくいきました。
因みに「Microsoft.ACE.OLEDB.12.0」でも大丈夫みたいです。
最後まで的確なアドバイスありがとうございました。
No.1
- 回答日時:
接続文字列の指定が間違っているのではないでしょうか?
以下のサイトが参考になると思います。
http://msdn.microsoft.com/library/ja/default.asp …
http://msdn.microsoft.com/library/ja/default.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サイトを作る必要があるので、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
白血球が多いとどんな心配があ...
-
EXCELで条件付き書式で空白セル...
-
エクセル指定した範囲からラン...
-
勃起する時って痛いんですか? ...
-
イタリアから帰国する際、肉製...
-
検便についてです。 便は取れた...
-
エクセルで数式の答えを数値と...
-
風俗店へ行く前のご飯
-
ある範囲のセルから任意の値を...
-
甲状腺が腫れているが血液検査...
-
2つの数値のうち、数値が小さい...
-
エクセルのラベルの値(文字列...
-
VLOOKUP関数を使用時、検索する...
-
リンク先のファイルを開かなく...
-
これって喉仏ですか? 私は女性...
-
WORDで複数語句を検索するには
-
小数点第一位が0のとき、切り...
-
一番多く表示のある値(文字列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
白血球が多いとどんな心配があ...
-
勃起する時って痛いんですか? ...
-
精子が黄色?
-
検便についてです。 便は取れた...
-
これって喉仏ですか? 私は女性...
-
小数点以下を繰り上げたものを...
-
甲状腺が腫れているが血液検査...
-
精液の落とし方を教えてください
-
エクセル指定した範囲からラン...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
精子に血が・・・
-
エクセルのラベルの値(文字列...
-
イタリアから帰国する際、肉製...
-
ある範囲のセルから任意の値を...
-
リンク先のファイルを開かなく...
-
中出しをするとお腹が痛い・・・。
-
MIN関数で空白セルを無視したい...
おすすめ情報