プロが教えるわが家の防犯対策術!

みなさんこんにちわ。

ASPを使用してweb上でローカルのACCESSデータベースを参照したいのですが、
エラーが出て、ページを開くことが出来ません。
動作環境は WINDOWS2000SP2 OFFICE2000SP2 MDAC2.5SP2 JET4.0 SP3
ODBCドライバのバージョン(Microsoft Access Driver) 4.00.6019.00

サンプルを参考に作成しました。DBをOPENするところのコードは
openStr = "driver={Microsoft Access Driver (*.mdb)};" & _
"dbq=" & Server.MapPath("critters.mdb")
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open openStr
と書きました。

しかし、IISよりこのASPファイルを参照すると以下のエラーが出ます。
HTTP 500.100 - 内部サーバー エラー -
ASP エラー
インターネット インフォメーション サービス

エラー タイプ
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver]一般エラー レジ
ストリ キー 'Temporary (volatile) Jet DSN for process 0x518
Thread 0x5ec DBC 0x2710064 Jet' を開くことができません。

どうもOPENするところで発生しているようなのです。
なにか、バージョンが古いのでしょうか。
NET8 ASSISTANTの環境は関係あるのでしょうか。
原因と思われるところがありましたら、どうか教えていただけないでしょうか。

A 回答 (8件)

む~



検索JET使ってみますか・・・

Dim cn As ADODB.Connection
Dim cnstr As String
    :
Set cn = New ADOOB.Connection
cnstr = "Provider=Microsoft.Jet.OLEDB.3.51;" _
   & "Data Source=" & Server.MapPath("critters.mdb")
cn.Open cnstr

あんまり変わらないような気もしますけど・・・
ちなみに、
>openStr = "driver={Microsoft Access Driver (*.mdb)};" & _
で、『{』が指定されていますが、サンプルでもされているのですか?使用できるのかな??

あと、MapPathの説明です↓
http://www.microsoft.com/japan/developer/library …

この回答への補足

>で、『{』が指定されていますが、サンプルでもされているのですか?使用できるのかな??
は使用できると思います。ノートPCの方はなんら問題なく表示されますので。

それとMapPathの説明、ありがとうございます。なにからなにまですいません。

検索JETというものを使ってみるのですか。
書き方がいまいち分からない為、研究しないといけないですね。
なにが、原因で表示されないのかもう、さっぱりです。
引き続きがんばって、行こうと思います、DBがOPENされないと
アプリケーションを作成するなんて、遠い夢になってしまいますものね。

補足日時:2002/01/08 19:43
    • good
    • 0

ちゃんとつながりますよ。


まず、ODBC設定でシステムDSNを設定します。
このときにmdbファイルの場所も設定します。
[データベース]という枠に中に[選択]というボタンがあるはずなので、ここで、mdbファイルを設定する必要があります。
ODBC設定でファイルを指定しておくことがポイントです。
次に
<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.open "MYDSN"
%>
と書けばつながります。
ここの「MYDSN」はODBC設定で指定したデータソース名です。

下手にMapPath等を使わずにまず、初歩から始めましょう。

この辺の資料は読みましたか?

http://www.microsoft.com/JAPAN/support/kb/articl …
http://www.microsoft.com/JAPAN/support/kb/articl …

この辺の資料を見ていただければ分かりますが、
大抵はデータソース名で接続していることが多いです。

あれこれやるより、システムDSNを設定して接続したほうが楽だし確実なのです。

---
手元の環境
Win2kSP2英語版,Office2kSP2
ODBCドライバ:Microsoft Access Driver[*.mdb]
ODBCDrv Ver:4.00.6019.00
    • good
    • 0
この回答へのお礼

本当にたくさんの回答をいただきありがとうございました。
どうやら、PC自体おかしくなってきていて、DLLがぐちゃぐちゃに
なっている等の原因は内部的なものだったと思われます。
現在はOSの再インストール(T_T)し、順調にページの
表示ができています。
最初のサンプル通りに書いたら、全然普通に表示できました。

本当にお騒がせしました。ありがとうございます。
これからも今回のことにめげずがんばっていきます!!

お礼日時:2002/01/10 19:15

#6補足への回答です。



>Set cn = CreateObject("ADOOB.Connection")
ADOOBとスペルミスをしています。正しくは『ADODB』です。
私の回答で間違えていたみたいですね。すみません。

>cn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
>"DataSource=" & Server.MapPath("critters.mdb")
Openの後ろに指定するのでしたら"="は不要だと思います。

この回答への補足

そうですね。というわけで、スペルを正しくして実行してみました。
・・・
<%
Dim cn

Set cn = CreateObject("ADODB.Connection")
cn.Open "Provider=Microsoft.Jet.OLEDB.3.51;" & _
"DataSource=" & Server.MapPath("critters.mdb")
・・・
こんな感じです。
最初は「OLEDB.4.0」でやってみたのですが、上手くいかず「OLEDB.3.51」で
やってみてもやはりだめでした。
エラー内容は変わりましたが。

エラー タイプ
Microsoft JET Database Engine (0x80004005)
エラーを特定できません

こんな感じです。 このエラーが出る前はしょっちゅう
オブジェクトが作成できませんのエラーが出ており、
どうやらCreateObjectのところでオブジェクトが生成できないようです。
ためしにADOからODBCドライバを使いDBへのアクセスはできることを
確認したので、ADOのオブジェクトが何らかの原因で生成できないと
思われます。・・・そろそろOSの入れ替えを考えてきました(T_T)

補足日時:2002/01/09 19:13
    • good
    • 0

JETはmdbファイルを開く際、同一ディレクトリにロックファイルを作成しますが、このロックファイルが作れないのではないですか?



IUSR_xxxxのアカウントでWriteできる必要があったはずです。

また、
> エラー タイプ
> Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
> [Microsoft][ODBC Microsoft Access Driver] ファイル '(不明)' を
> 開くことができませんでした。
とありますが、mdbファイルの指定でUNC名やネットワークを参照していませんか?

この回答への補足

OLE DBプロバイダにMicrosoft OLE DB Provider for Microsoft JET
を使用するということで、こんな感じに書いてみました。
・・・
<%
Dim cn

Set cn = CreateObject("ADOOB.Connection")
cn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"DataSource=" & Server.MapPath("critters.mdb")

・・・
これでページの表示をしてみたところ、以下のエラーが出ました。

Microsoft VBScript 実行時エラー (0x800A01AD)
ActiveX コンポーネントはオブジェクトを作成できません。: 'ADOOB.Connection'

いったい原因はなんなのでしょうか・・・。
これだけ調べてもわからないのなら、DLLがおかしくなっているかも
しれませんね。そうするとOSの再インストールからやり直しでしょうか・・・。

補足日時:2002/01/09 15:42
    • good
    • 0

何度もすみません。


私も「これだ!」という解決策がだせなくて・・・

ちょっと、補足を読んでいての疑問なのですが、

>極端な話、ODBCのデータソースの追加の時にはデータソース名しか
>指定していません。他の設定は一切していません。(PassWord等)
は、データソース名の下にある『データベース選択』はされていますよね?

とりあえず確認です。
また、原因を探ってみます。

この回答への補足

本当に色々ありがとうございます。ものすごく助かります。
私も色々と原因を探っているのですが、今使用しているPCではなく
ノートPCでほぼ同じ環境にして参照してみるとページが見れるのです。
不思議なので相違点をずっと探しているのですが、やっぱり分かりません。
疑問に思われている部分ですが、ノートPCの方では「データ-ベースの選択」
はしていません。(これはACCESSでみるDBを特定してしまうのですかねぇ。)
なので、現在の自分自身のPCでも選択はしていませんでした。
一応、選択してやってみたのですが、やはり同じエラーがでました。(>_<)

WEB共有しているフォルダの中にはASPファイルとMDBファイルが2つ入っています。ASPファイルの中でMDBをOPENする時に2行目で
"dbq=" & Server.MapPath("critters.mdb")

と書いているのですが、なにせサンプルなものでMapPathの意味がわかりません。
というのも、ノートPCの方で色々実験していて、WEB共有しているフォルダの中に
もしもMDBのファイルが無い場合、一番最初に書いたようなOPENエラーがでるみたいなのです。これにはMapPathの何かが関係しているのでしょうか?

ちなみにもちろん自分自身のPCでは同階層にASPファイルとMDBファイルを
置いてテストしています。

補足日時:2002/01/08 18:08
    • good
    • 0

今回のエラーでmdbはASPから参照できているようですね。


権限のエラーが発生したということは、UIDとPassWordが設定されていると考えられるのですが。

cn.Open "TEST",[UID],[PassWord](それぞれ”で囲ってください)
で確認できますか?

PassWordの指定が去れていないのでしたら、ODBCデータソースの指定を、もう一度削除して行ってみてください。

この回答への補足

大変丁寧に教えてくださり、ありがとうございます。
しかし、まだ上手く出来ないです。
極端な話、ODBCのデータソースの追加の時にはデータソース名しか
指定していません。他の設定は一切していません。(PassWord等)
ということは、やっぱり、何か他のところですかねぇ。

ちなみにIISで作成した仮想ディレクトリが参照している、パスが
C:\WEB だとするとこのWEBフォルダはちゃんとWEB共有されています。
ただ、エイリアスの編集というところで、ちゃんと設定できているか
不安は残りますが、ちゃんと出来ていると思っています。

アクセス許可:読み取り、スクリプトソースアクセス、ディレクトリの参照
実行アクセス権:スクリプト

です。

補足日時:2002/01/08 17:36
    • good
    • 0

はじめまして。



上記のエラーメッセージについてはよく分からないのですが、同様のシステムを作ったことがあるので参考までに・・・

補足を見るとデータソース名は指定できているようですので、データソース名「TEST」でしたら

Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "TEST"
でいけると思います。

この回答への補足

ありがとうございます。
しかし、よく分からないのですが、

openStr = "driver={Microsoft Access Driver (*.mdb)};" & _
"dbq=" & Server.MapPath("critters.mdb")
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open openStr

と最初に書いていたので、「cn.Open openStr」を「cn.Open "TEST"」
とすると、最初の2行はどうなるのでしょう・・・。
それともそんなに単純じゃなく、もっと、複雑に書くのでしょうか。
一応、「cn.Open "TEST"」でやってみたのですが、今度は、

エラー タイプ
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] ファイル '(不明)' を
開くことができませんでした。ほかのユーザーが排他的に開いてい
るか、データを読み取る権限がありません。

とエラーがでました。ちなみに、ASPファイルを参照して立ち上がるデフォルトの
ブラウザはNetscape4.7です。
何か他のところに原因があるのかもしれないですねぇ・・・。(-_-;)

補足日時:2002/01/08 16:43
    • good
    • 0

> ローカルのACCESSデータベースを、、、


このmdbファイルはwebサーバと同一マシン上に保存されているファイルですよね。
であれば、webサーバのシステムDSNを設定正しく設定して、DSN名でADODB.Connectionをしてやれば開けますよ。

この回答への補足

ローカルのACCESSというのはおっしゃるとおり、WebサーバーとMDBファイル等を
同じマシンで動かすということです。
システムDSNの設定を正しくというのは、ODBCのシステムデータソースの構成を
正しく設定するということでしょうか?それが良くわからないのですが、
データ-ソース名というのは何と関係のあるものなのでしょうか。ちなみにその名前がTESTだとしたら、そのDSN名でADOの接続をするのにどのような処理をしたらいいのでしょうか。
Set cn = Server.CreateObject("ADODB.Connection")という文字だけではなく
なにかDSN名を指定しないといけないのでしょうか。
データ-ソースの構成で、詳細情報にログイン名とパスワードがありますが設定しないでやりたいです。 初心者なものですいません。よろしくお願いします。

補足日時:2002/01/08 15:14
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています