OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

ASPからACCESSのOPENどうしても出来ません

  • 困ってます
  • 質問No.194555
  • 閲覧数2879
  • ありがとう数12
  • 気になる数0
  • 回答数8
  • コメント数0

お礼率 41% (12/29)

みなさんこんにちわ。

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の環境は関係あるのでしょうか。
原因と思われるところがありましたら、どうか教えていただけないでしょうか。
通報する
  • 回答数8
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.5
レベル9

ベストアンサー率 59% (32/54)

む~

検索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/jpiis/iishelp/iis/asp/vbob98iw.htm
補足コメント
dorarin

お礼率 41% (12/29)

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

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

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

その他の回答 (全7件)

  • 回答No.2
レベル9

ベストアンサー率 59% (32/54)

はじめまして。 上記のエラーメッセージについてはよく分からないのですが、同様のシステムを作ったことがあるので参考までに・・・ 補足を見るとデータソース名は指定できているようですので、データソース名「TEST」でしたら Set cn = Server.CreateObject("ADODB.Connection") cn.Open "TEST" ...続きを読む
はじめまして。

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

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

Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "TEST"
でいけると思います。
補足コメント
dorarin

お礼率 41% (12/29)

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

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:08


  • 回答No.1
レベル12

ベストアンサー率 41% (324/772)

> ローカルのACCESSデータベースを、、、 このmdbファイルはwebサーバと同一マシン上に保存されているファイルですよね。 であれば、webサーバのシステムDSNを設定正しく設定して、DSN名でADODB.Connectionをしてやれば開けますよ。 ...続きを読む
> ローカルのACCESSデータベースを、、、
このmdbファイルはwebサーバと同一マシン上に保存されているファイルですよね。
であれば、webサーバのシステムDSNを設定正しく設定して、DSN名でADODB.Connectionをしてやれば開けますよ。
補足コメント
dorarin

お礼率 41% (12/29)

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

ベストアンサー率 59% (32/54)

今回のエラーでmdbはASPから参照できているようですね。 権限のエラーが発生したということは、UIDとPassWordが設定されていると考えられるのですが。 cn.Open "TEST",[UID],[PassWord](それぞれ”で囲ってください) で確認できますか? PassWordの指定が去れていないのでしたら、ODBCデータソースの指定を、もう一度削除して行っ ...続きを読む
今回のエラーでmdbはASPから参照できているようですね。
権限のエラーが発生したということは、UIDとPassWordが設定されていると考えられるのですが。

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

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

お礼率 41% (12/29)

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

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

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

です。
投稿日時 - 2002-01-08 17:36:17
  • 回答No.4
レベル9

ベストアンサー率 59% (32/54)

何度もすみません。 私も「これだ!」という解決策がだせなくて・・・ ちょっと、補足を読んでいての疑問なのですが、 >極端な話、ODBCのデータソースの追加の時にはデータソース名しか >指定していません。他の設定は一切していません。(PassWord等) は、データソース名の下にある『データベース選択』はされていますよね? とりあえず確認です。 また、原因を探ってみま ...続きを読む
何度もすみません。
私も「これだ!」という解決策がだせなくて・・・

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

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

とりあえず確認です。
また、原因を探ってみます。
補足コメント
dorarin

お礼率 41% (12/29)

本当に色々ありがとうございます。ものすごく助かります。
私も色々と原因を探っているのですが、今使用している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:07
  • 回答No.7
レベル9

ベストアンサー率 59% (32/54)

#6補足への回答です。 >Set cn = CreateObject("ADOOB.Connection") ADOOBとスペルミスをしています。正しくは『ADODB』です。 私の回答で間違えていたみたいですね。すみません。 >cn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ ...続きを読む
#6補足への回答です。

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

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

お礼率 41% (12/29)

そうですね。というわけで、スペルを正しくして実行してみました。
・・・
<%
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:09
  • 回答No.6
レベル12

ベストアンサー率 41% (324/772)

JETはmdbファイルを開く際、同一ディレクトリにロックファイルを作成しますが、このロックファイルが作れないのではないですか? IUSR_xxxxのアカウントでWriteできる必要があったはずです。 また、 > エラー タイプ > Microsoft OLE DB Provider for ODBC Drivers (0x80004005) > [Microsoft ...続きを読む
JETはmdbファイルを開く際、同一ディレクトリにロックファイルを作成しますが、このロックファイルが作れないのではないですか?

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

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

お礼率 41% (12/29)

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:38
  • 回答No.8
レベル12

ベストアンサー率 41% (324/772)

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

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

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

http://www.microsoft.com/JAPAN/support/kb/articles/JP300/3/82.asp
http://www.microsoft.com/JAPAN/support/kb/articles/J045/5/46.asp

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

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

---
手元の環境
Win2kSP2英語版,Office2kSP2
ODBCドライバ:Microsoft Access Driver[*.mdb]
ODBCDrv Ver:4.00.6019.00
お礼コメント
dorarin

お礼率 41% (12/29)

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

本当にお騒がせしました。ありがとうございます。
これからも今回のことにめげずがんばっていきます!!
投稿日時 - 2002-01-10 19:15:02
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ