• ベストアンサー
  • 困ってます

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)でエラーが起こります。 なぜエラーが出るのでしょうか。原因と対処方法をおしえていただけませんでしょうか? 「更新可能なクエリであることが必要です。」というエラーなので何かの設定の問題でしょうか?

共感・応援の気持ちを伝えよう!

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

  • ベストアンサー
  • 回答No.1
noname#102878
noname#102878

フォルダへの書き込み権限がないんじゃないですか? InsertするってことはMDBファイルを更新するってことです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。

質問者からの補足

ありがとうございます。 そうなんです。インターネット サービス マネージャで該当フォルダの「読み取り」「書き込み」もOKにしてありますし,「guestbook.mdb」のほうも「書き込み可」にしてあるのですが。なにかほかの設定があるのでしょうか?OSはWin2000Professionalです。

その他の回答 (4)

  • 回答No.5
  • akiaki2
  • ベストアンサー率59% (16/27)

皆さんの言うとおり、権限かな?とも思います。 あと単純にSQLが間違ってたりして・・・?(私はよく間違います(^^;) 一度、strSQLをページ上に吐き出してみて、そのSQLをコピーして、guestbook.mdbで新しくクエリを作って貼り付けて実行してみてはどうでしょう。 SQLが間違っていればguestbook.mdbでもエラーになりますよね(^^) ではがんばってください

共感・感謝の気持ちを伝えよう!

質問者からのお礼

みなさんありがとうございました。 エクスプローラ中の.mdbファイルを右クリックし、 プロパティのセキュリティを「許可」にすることによって できました。

  • 回答No.4

ASP-mdb開発者です~ 毎日大苦戦しています^^; 【更新可能なクエリであることが必要です。】 考えられる原因は3つですね。 1.SQL文が間違ってる Accessのクエリで確認してみて下さい~ 2.INSERT文でvaluesで入れてる値が空の値 空の値をINSERTすると、このエラーが発生する可能性があります。 3.サーバの設定でIUSR_****の権限の問題 まず、ファイルに読み取りと書き込み権限が必要です。 さらに、フォルダには読み取り・書き込み・削除権限が必要です。 なぜなら、Accessはldbファイルを作成しますので、ldbファイルを削除する権限が必要なのです^^; もしうまくいかなかったら、「フルコントロール」にするのも手ですが、、、 最後にアドバイスですが、wwwからは見えない場所にmdbファイルは置いて下さい^^; では~

共感・感謝の気持ちを伝えよう!

  • 回答No.3

WebUserの権限が不足してるとか? ・・・関係ないかな?自信なしです。

共感・感謝の気持ちを伝えよう!

  • 回答No.2
noname#102878
noname#102878

> インターネット サービス マネージャで該当フォルダの「読み取り」「書き込み」もOKにしてありますし,「guestbook.mdb」のほうも「書き込み可」にしてあるのですが。なにかほかの設定があるのでしょうか?OSはWin2000Professionalです。 一応実際のディレクトリのプロパティでもアクセス権を確認してみてください。

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • IIS7.0 と ASP を使ってMDBファイルを参照したい

    みなさんこんばんわ。 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

  • 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更新・変更ができない

    毎々お世話になってます。 ASP(VBScript)で更新・変更ができないのです。 db.Execute(StrSQL) 部分でエラーになり、 //db.Execute(StrSQL) を使用しない状態にするとエラーは出ませんが、更新・変更ができません。 <% //DB接続 Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.Open "Driver={Microsoft Access Driver (*.mdb)};" & _ "DBQ=" & Server.Mappath("dbname.mdb") // 1. SELECT文:SELECT * FROM テーブル名 // 2. INSERT文:INSERT INTO テーブル名 (フィールド名) VALUES (値) // 3. UPDATE文:UPDATE テーブル名 SET フィールド名=値 // 4. DELETE文:DELETE * FROM テーブル名 //データ変更 //--- 追加する文字列を変数にセット --- uID = Request.Form("uID") uTYPE = Request.Form("uTYPE") uNAME= Request.Form("uNAME") uMNAME = Request.Form("uMNAME") //--- データ変更SQL --- SQLstr = "UPDATE " & tablename & " SET " SQLstr = SQLstr & "[uID]=#" & uID & "#," SQLstr = SQLstr & "[uTYPE]=" & uTYPE & "," SQLstr = SQLstr & "[uNAME]=" & uNAME & "," SQLstr = SQLstr & "WHERE ID=" & uID //--- データ追加実行 --- db.Execute(StrSQL) //DB接続解除 ObjConn.Close Set ObjConn = Nothing %>

  • 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 が登録できましたので、データベース自体に他からの実行の場合、更新出来ないような 設定になっていると思うのですが、対処方法がわかりません。 どうすればよいか教えて頂けないでしょうか?

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

    OSはWin xp professionalです。 ASPでmdbファイルへ接続はOK そしてinsert文で新規レコードを追加しようとすると エラーが出てしまいます。 エラーの内容は, エラー タイプ 更新可能なクエリであることが必要です。 以前は問題なく動いていたのですが、HDDが壊れて 修理をしてから出るようになりました。 同時にAccess2000から2002に更新したのですが 何か設定も変更する必要があったのでしょうか。

  • 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

  • ASP + MDBで発生したエラーが解決できません。。。

    こんにちは。 いま、ローカルPCでシステム開発をしています。 環境としては、  WindowsXP + IIS + ASP + MDB(ACCESS2003) です。 いま、MDBにDB接続して、データを取得しようとしているのですが、以下のエラーが発生していて、治りません。 【エラータイプ】 Microsoft VBScript 実行時エラー (0x800A01B6) オブジェクトでサポートされていないプロパティまたはメソッドです。:Open ソースコードは以下の通りです。 【ソース】 'コネクションオブジェクト Set objCon = Server.CreateObject("ADODB.Connection") objCon.Provider = "Microsoft.Jet.OLEDB.4.0" objCon.ConnectionString = "C:\test.mdb" objCon.Open 'レコードセットオブジェクト objRs = Server.CreateObject("ADODB.Recordset") objRs.Open strSQL, objCon, 3 上記のobjRs.Open→Set objRs = objCon.Executeに変更するとエラーは発生しないのですが、RecordCountなどのプロパティが利用できません。 色々と調査したのですが、全くわかりません。 どなたか情報をご存知でしたら、ぜひともご教示ください。 宜しくお願いします。

  • ASP(海外)サーバでMDBファイルのパスを設定するには?

    brinksterというASPサーバを使用しています。 MS ACCESS Databaseもサポートしているのですが、 PWSのODBCマネージャに相当する部分がありません。 ASPファイルを実行すると、『プログラムで指定したMDBファイルが見つかりません』というエラーが出ます。 Database Managerというページが、あるにはあるのですが、ACCESS DB Passwordや、SQL Queryを書き込むように求められます。SQL Queryとは何ですか?何を書けばよいのでしょうか? ちなみに、実行させたASPファイルは、私の自宅のPWSでは、問題無く動作するのですが…。

  • 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' を開くことができません。

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