• ベストアンサー

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

みなさんこんにちわ。 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の環境は関係あるのでしょうか。 原因と思われるところがありましたら、どうか教えていただけないでしょうか。

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

  • ベストアンサー
  • masakin
  • ベストアンサー率59% (32/54)
回答No.5

む~ 検索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
質問者

補足

>で、『{』が指定されていますが、サンプルでもされているのですか?使用できるのかな?? は使用できると思います。ノートPCの方はなんら問題なく表示されますので。 それとMapPathの説明、ありがとうございます。なにからなにまですいません。 検索JETというものを使ってみるのですか。 書き方がいまいち分からない為、研究しないといけないですね。 なにが、原因で表示されないのかもう、さっぱりです。 引き続きがんばって、行こうと思います、DBがOPENされないと アプリケーションを作成するなんて、遠い夢になってしまいますものね。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (7)

  • selenity
  • ベストアンサー率41% (324/772)
回答No.8

ちゃんとつながりますよ。 まず、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
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • masakin
  • ベストアンサー率59% (32/54)
回答No.7

#6補足への回答です。 >Set cn = CreateObject("ADOOB.Connection") ADOOBとスペルミスをしています。正しくは『ADODB』です。 私の回答で間違えていたみたいですね。すみません。 >cn.Open = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ >"DataSource=" & Server.MapPath("critters.mdb") Openの後ろに指定するのでしたら"="は不要だと思います。

dorarin
質問者

補足

そうですね。というわけで、スペルを正しくして実行してみました。 ・・・ <% 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)

全文を見る
すると、全ての回答が全文表示されます。
  • selenity
  • ベストアンサー率41% (324/772)
回答No.6

JETはmdbファイルを開く際、同一ディレクトリにロックファイルを作成しますが、このロックファイルが作れないのではないですか? IUSR_xxxxのアカウントでWriteできる必要があったはずです。 また、 > エラー タイプ > Microsoft OLE DB Provider for ODBC Drivers (0x80004005) > [Microsoft][ODBC Microsoft Access Driver] ファイル '(不明)' を > 開くことができませんでした。 とありますが、mdbファイルの指定でUNC名やネットワークを参照していませんか?

dorarin
質問者

補足

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の再インストールからやり直しでしょうか・・・。

全文を見る
すると、全ての回答が全文表示されます。
  • masakin
  • ベストアンサー率59% (32/54)
回答No.4

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

dorarin
質問者

補足

本当に色々ありがとうございます。ものすごく助かります。 私も色々と原因を探っているのですが、今使用している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ファイルを 置いてテストしています。

全文を見る
すると、全ての回答が全文表示されます。
  • masakin
  • ベストアンサー率59% (32/54)
回答No.3

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

dorarin
質問者

補足

大変丁寧に教えてくださり、ありがとうございます。 しかし、まだ上手く出来ないです。 極端な話、ODBCのデータソースの追加の時にはデータソース名しか 指定していません。他の設定は一切していません。(PassWord等) ということは、やっぱり、何か他のところですかねぇ。 ちなみにIISで作成した仮想ディレクトリが参照している、パスが C:\WEB だとするとこのWEBフォルダはちゃんとWEB共有されています。 ただ、エイリアスの編集というところで、ちゃんと設定できているか 不安は残りますが、ちゃんと出来ていると思っています。 アクセス許可:読み取り、スクリプトソースアクセス、ディレクトリの参照 実行アクセス権:スクリプト です。

全文を見る
すると、全ての回答が全文表示されます。
  • masakin
  • ベストアンサー率59% (32/54)
回答No.2

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

dorarin
質問者

補足

ありがとうございます。 しかし、よく分からないのですが、 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です。 何か他のところに原因があるのかもしれないですねぇ・・・。(-_-;)

全文を見る
すると、全ての回答が全文表示されます。
  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

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

dorarin
質問者

補足

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ASP AccessDBオープン出来ない

    お世話になります。 サーバー:WindowsServer2003 R2 SE DB:Access2003 WindowsServer2003にASPを配置し、同じくWindowsServer2003にAccess2003を配置し、 ASPからAccessをオープンする時にエラーが出ます。 ODBC設定パターンと、Jetパターン両方等ダメです。 IISはもちろん設定しており、権限も問題無いと思われ、MicrosoftサポートでもTEMPのアクセス権限どうのこうのとありましたが、問題なさそうです。 サイトを探しまくって、分からない為、ご質問させて頂きまた。 有識者の方々、ご享受宜しくお願い申し上げます。 【ソース1】 Set gCon = Server.CreateObject("ADODB.Connection") gCon.Open "TEST" ※TESTはODBC名です。Accessを指定しております。Accessにはパスワードも何もありません。 【Webページ結果】 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Microsoft Access Driver] ファイル '(不明)' を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。 【ソース2】 Set adoCon = Server.CreateObject("ADODB.Connection") adoCon.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("TEST.mdb") adoCon.Open ※パスはあってます。 【Webページ結果】 Microsoft JET Database Engine エラー '80004005' エラーを特定できません -------- ローカルでASP、Accessを実行すると、問題なくオープン出来ます。 WindowsServer2003が問題なのでしょうか?

  • ASPによる アクセス2000のデータベース更新について

    アクセス2000で作成したデータベースに ASPでデータベースを更新しようとしたのですが、エラーとなって更新できずにいます。 (アクセスデータベース内容) ID F1 F2 1 TEST1 TEST2 2 1 2 3 4 5 4 23 ※ID の 5  に 23 を登録したい。 (ASP内容) <% ' データベースへの接続を開始 Set cn = Server.CreateObject("ADODB.Connection") cn.Open "Driver={Microsoft Access Driver (*.mdb)}; " & _ "DBQ=" & Server.Mappath("TESTdb1.mdb") cn.Execute"INSERT INTO TTT(ID,F1) VALUES(5,23);" %> (エラー内容) エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] 更新可能なクエリであることが必要です。 /SQL-TEST/ncsch1.asp, line 7 アクセスの追加クエリで、INSERT INTO TTT(ID,F1) VALUES(5,23); を 実行したら、問題無く 5 23 が登録できましたので、データベース自体に他からの実行の場合、更新出来ないような 設定になっていると思うのですが、対処方法がわかりません。 どうすればよいか教えて頂けないでしょうか?

  • Access98で作ったmdbをAccess2000で変換したらエラー発生

    こちらのFREEの掲示板を使いながらASPを勉強しているところですが、 Access98で作ったmdbをAccess2000のデータベースユーティリティで 変換したところ、下記のようにODBC Drivers エラーが発生しました。 Access2000で作成したmdbを使用する場合にはODBC Driverもバージョン アップしなければならないのでしょうか?対処方法についてもご指導 をお願いしたいと思っています。 Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Microsoft Access Driver]一般エラー レジストリ キー 'Temporary (volatile) Jet DSN for process 0x5b8 Thread 0x66c DBC 0x2091ba4 Jet' を開くことができません。

  • IIS7でIIS6で動いていたASPアプリを動かしたい

    初めまして、santa51と申します 表題の通り、IIS7でASPアプリを動かしたいのですが、 動きません。 xpのIIS6では動いていました エラーの内容は Microsoft OLE DB Provider for ODBC Drivers エラー '80004005' [Microsoft][ODBC Microsoft Access Driver] ディスクまたはネットワークのエラーです。 /????/?????/login.asp, 行 109 となります 109行は 107 DBName="Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath("../cgi-bin/mydb/" & campany & "/master.mdb") 108 Set db=Server.CreateObject("ADODB.Connection") 109 db.Open DBName です。 確認がとれていることは 1.Server.Mappath("../cgi-bin/mydb/" & campany & "/master.mdb")は確実にあっています。 環境は vista business IIS7 access2003 です。 以上、よろしくお願いします santa51

  • mdbを直接開いてもasp側に影響を与えない方法について

    お世話になります。当方、Windows Server 2003 R2 SP1 で IIS6.0 を使用しています。 サーバ側に設置しているmdbファイルをODBCでシステムDSNに登録し、ASPから 接続しております。 メンテナンスなどで直接mdbファイルを開いている時に、ASPのページに アクセスすると以下のエラーメッセージが出て正常表示が出来なくなります。 ======================================================== HTTP 500.100 - 内部サーバー エラー - ASP エラー インターネット インフォメーション サービス -------------------------------------------------------- エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] '(不明)' は既に使用されているので、使用できませんでした。 ======================================================== mdbファイルを直接開いても、ASP側でもエラー表示されないように するにはどうしたらよいでしょうか? ソースは以下のようにしております。 Set cnn=Server.CreateObject("ADODB.Connection") cnn.open "dummy" cnn.close cnn.open "testdb"  '// ODBCをtestdbにしています。 SQL = "SELECT * FROM M_USER ORDER BY USERID" Set rs1 = cnn.Execute(SQL) よろしくお願いいたします。

  • aspが動きません(IIS7、access2007の設定?)

    win2K,access2Kで作成したASPプログラムですが、そのままwinxp, access2003までは問題なく動いていました。 vista(ultimate),access2007ではエラー(HTTP500内部サーバエラー)となります。いろいろと調べましが、うまく動きません。 記述内容は以下のとおりです。 filename=Server.MapPath ("./") & "\data.mdb;" odbcConect="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & filename Set db = Server.CreateObject("ADODB.Connection") db.Open odbcConect アドバイスをよろしくお願いいたします。

  • ASPで,mdbファイルへのinsert文のエラー

    ASPで,guestbook.mdbファイルへ接続,はOK, そしてinsert文で新規レコードを追加しようとすると エラーが出てしまいます。 select文は使えるのですが。 エラーの内容は, エラー タイプ Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] 更新可能なクエリであることが必要です。 /asp_server/toda/guestbook.asp, line 24 です。 dbへの接続方法は, '***** データベース(guestbook.mdb)に接続 ***** Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & _ Server.Mappath("guestbook.mdb") です。 問題は, '***** 名前とメッセージが空白でないときはデータ追加SQLを実行 ***** StrSQL = "insert into T_Message (name, word, entrydate) " & _ "values ('" & name & "','" & word & "',#" & entrydate & "#)" ObjConn.Execute(StrSQL) ここの,ObjConn.Execute(StrSQL)でエラーが起こります。 なぜエラーが出るのでしょうか。原因と対処方法をおしえていただけませんでしょうか? 「更新可能なクエリであることが必要です。」というエラーなので何かの設定の問題でしょうか?

  • MDBパスワード設定済みDBへ接続

    MDBパスワード設定済み(排他オープンからの設定)のDBへ接続を試みているのですが、うまく 接続できません。 ご教授ください。 ASP vbscript <ソース> set objCon=ServerCreateObject("ADODB.Connection") cn1 = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "DataSource=" & Server.path("db.mdb") & ";Jet OLEDB:Database Password=password;" objCon.Open cn1 <エラー> Microsoft JET Database Engine エラー '80040e4d' パスワードが正しくありません。

  • WinXP→Server2003 にASPとDB(ACCESS)を移行

    WinXP→Server2003 にASPとDB(ACCESS)を移行、エラー '800a0ea9' WinXP 上にDB:ACCESS、ASPのWEBシステムを動かしていましたが、 WinServer2003 上に移行しました。 移行後、以下のエラーが出ました。 ---------------------------------------------------------- ADODB.Connection エラー '800a0ea9' プロバイダが指定されておらず、既定のプロバイダがありません。 /source/test.asp, 行 35 ---------------------------------------------------------- ODBCデータソースアドミニストレータ のシステムDSNを見たところ 確かにACCESSのドライバがありませんでした。 ネットで調べたところ (1)WinServer2003が64bitなので、32bitのACCESSのドライバは入っていない (2)以下32bit版の ODBCアドミニストレータを実行すると解決  →C:\WINDOWS\SysWOW64\odbcad32.exe  をクリックし、設定すれば32bitアプリケーションからODBCデータソースを利 用できる。 とあり、(2)を開くと確かに、MicrosoftAccessDriverがあり、こちらでWinXPのと きと同じようにODBC設定しました。 しかしこの段階でも ---------------------------------------------------------- ADODB.Connection エラー '800a0ea9' プロバイダが指定されておらず、既定のプロバイダがありません。 /source/test.asp, 行 35 ---------------------------------------------------------- がでてしまいます。 ちなみにこの行 35 には以下のソースがあります。 33 wsDSN="TEST" 34 Set gCon = Server.CreateObject("ADODB.Connection") 35 gCon.Open wsDSN 33 wsDSN="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TEST\TEST.mdb" 34 Set gCon = Server.CreateObject("ADODB.Connection") 35 gCon.Open wsDSN としても同エラーでした。 ODBC接続がうまくいく方法アドバイスよろしくお願いします。

  • aspのファイルからAccessを参照させるとエラーが出たり出なかったり

    WinXP Proに IISを使って ASPのファイルから ACCESSのDBを表示させたいのですが、 ******************************** Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access Driver] ファイル '(不明)' を開くことができませんでした。ほかのユーザーが排他的に開いているか、データを読み取る権限がありません。 ******************************** と言うエラーメッセージが出てしまいます。 昨日までは普通に表示していたのです。 ソース ******************************* <% Dim Rs Set Rs=Server.CreateObject("ADODB.Recordset") Rs.open"SELECT * FROM TABLES ", "DSN=yihua" Response.Write Rs("NAME") Rs.close set Rs=Nothing %> ******************************* です。 更にこの見えていたファイルをコピーしてリネームして別の名前でaspファイルとして保存しても 同じエラーメッセージがでてしまいます。 何が原因なのでしょうか? 見えたり見えなかったりするのが、理解できなく 苦しんでいます。 ASP勉強中でかなり初心者です。 よろしくお願いします。

MFC-J6583CDWのスキャンができない
このQ&Aのポイント
  • MFC-J6583CDWのスキャンができなくなりました。PC接続中のままで終わります。
  • 過去はファイアーウォールをいじる必要はありませんでしたが、今回はスキャンができません。
  • Windows11で接続された無線LANの環境で問題が発生しています。
回答を見る

専門家に質問してみよう