プロが教える店舗&オフィスのセキュリティ対策術

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)でエラーが起こります。
なぜエラーが出るのでしょうか。原因と対処方法をおしえていただけませんでしょうか?

「更新可能なクエリであることが必要です。」というエラーなので何かの設定の問題でしょうか?

A 回答 (5件)

フォルダへの書き込み権限がないんじゃないですか?


InsertするってことはMDBファイルを更新するってことです。

この回答への補足

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

補足日時:2003/06/08 10:29
    • good
    • 0
この回答へのお礼

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

お礼日時:2003/06/30 16:02

皆さんの言うとおり、権限かな?とも思います。



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

ではがんばってください
    • good
    • 1
この回答へのお礼

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

お礼日時:2003/06/30 16:05

ASP-mdb開発者です~


毎日大苦戦しています^^;


【更新可能なクエリであることが必要です。】


考えられる原因は3つですね。

1.SQL文が間違ってる
Accessのクエリで確認してみて下さい~

2.INSERT文でvaluesで入れてる値が空の値
空の値をINSERTすると、このエラーが発生する可能性があります。

3.サーバの設定でIUSR_****の権限の問題
まず、ファイルに読み取りと書き込み権限が必要です。
さらに、フォルダには読み取り・書き込み・削除権限が必要です。
なぜなら、Accessはldbファイルを作成しますので、ldbファイルを削除する権限が必要なのです^^;
もしうまくいかなかったら、「フルコントロール」にするのも手ですが、、、


最後にアドバイスですが、wwwからは見えない場所にmdbファイルは置いて下さい^^;
では~
    • good
    • 0

WebUserの権限が不足してるとか?


・・・関係ないかな?自信なしです。
    • good
    • 0

> インターネット サービス マネージャで該当フォルダの「読み取り」「書き込み」もOKにしてありますし,「guestbook.mdb」のほうも「書き込み可」にしてあるのですが。

なにかほかの設定があるのでしょうか?OSはWin2000Professionalです。

一応実際のディレクトリのプロパティでもアクセス権を確認してみてください。
    • good
    • 0

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