
みなさんこんばんわ。
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- C言語・C++・C# 未解決の外部シンボル _printfが関数_mainで参照されました 1 2022/09/18 15:28
- スーパー・コンビニ イオンカードで、レジでWAON POINTを使って支払いたい時、電子マネーWAONカードのように機械 1 2023/03/12 05:44
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- PHP preg_matchで Warning: Undefined variableが出ます 1 2022/11/15 17:06
- Excel(エクセル) RANK.EQとCOUNTIFSの組み合わせで同ポイントの場合、違う条件を加えて順位を付けたい。 1 2022/08/30 19:49
- ポイントサービス・マイル docomoポイントについてです。 今まで9000pointあったのが いきなり120pointにな 6 2022/07/01 10:59
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
- WordPress(ワードプレス) ワードプレスのエラー ログイン画面が表示できない 1 2022/11/05 09:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
尿検査前日に自慰行為した時の...
-
値が入っているときだけ計算結...
-
至急!尿検査前日にオナニーし...
-
VLOOKUP関数を使用時、検索する...
-
【Excelで「正弦波」のグラフを...
-
MIN関数で空白セルを無視したい...
-
EXCELで式からグラフを描くには?
-
検便についてです。 便は取れた...
-
リンク先のファイルを開かなく...
-
ある範囲のセルから任意の値を...
-
2つの数値のうち、数値が小さい...
-
尿検査の前日は自慰控えたほう...
-
小数点以下を繰り上げたものを...
-
一番多く表示のある値(文字列...
-
Excel 数値の前の「 ' 」を一括...
-
風俗店へ行く前のご飯
-
値が入っている一番右のセル位...
-
EXCELで条件付き書式で空白セル...
-
彼女のことが好きすぎて彼女の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
イタリアから帰国する際、肉製...
-
2つの数値のうち、数値が小さい...
-
健否~書類の書き方~
-
VLOOKUP関数を使用時、検索する...
-
値が入っているときだけ計算結...
-
小数点以下を繰り上げたものを...
-
エクセルで空白セルを含む列の...
-
EXCELで条件付き書式で空白セル...
-
リンク先のファイルを開かなく...
-
ある範囲のセルから任意の値を...
-
精子に血が・・・
-
エクセルで数式の答えを数値と...
-
風俗店へ行く前のご飯
-
エクセル指定した範囲からラン...
-
一番多く表示のある値(文字列...
-
Excel 数値の前の「 ' 」を一括...
-
ワードのページ番号をもっと下...
-
MIN関数で空白セルを無視したい...
おすすめ情報