出来るのだASP Q&A掲示板(過去LOG)  訪問数 52046 昨日 889 今日 776
    【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。
Topに戻る 掲示板に戻る 検索 削除 管理者

ACCESSの接続 Execute   りえさん [2005/08/01 17:55:25] [5165]
  Re:ACCESSの接続 Execute   YasNet(管理人)さん [2005/08/01 18:21:07] [5166]
    Re:ACCESSの接続 Execute   りえさん [2005/08/02 10:01:48] [5168]
      Re:ACCESSの接続 Execute   YasNet(管理人)さん [2005/08/02 12:05:19] [5170]
        Re:ACCESSの接続 Execute   りえさん [2005/08/02 15:54:13] [5171]
          Re:ACCESSの接続 Execute   YasNet(管理人)さん [2005/08/02 21:11:00] [5172]
            Re:ACCESSの接続 Execute   はやしさん [2006/01/27 12:49:12] [5623]
              Re:ACCESSの接続 Execute   ビギナーズラックさん [2006/01/27 14:43:12] [5625]
                Re:ACCESSの接続 Execute   はやしさん [2006/01/27 16:59:13] [5629]
  発言者により削除されました!! Lightningさん [2006/01/26 16:48:25] [5617]

[5165] ACCESSの接続 Execute
投稿者:りえさん 2005/08/01 17:55:25
ASPの初心者ですが、次のプログラムを実行するとどうしてもこのようなエラーが出てきます。

因みに、WINDOWS XP ACCESS 2000 です。

エラー タイプ
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access Driver] 更新可能なクエリであることが必要です。
原因は →  ObjConn.Execute(StrSQL)
らしいですが、どうしても間違っているとは思えないのですが。
良ければ、教えていただけませんでしょうか。
よろしくお願い致します。




<%
'***** データベース(guestbook.mdb)に接続 *****
Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & _
Server.Mappath("guestbook.mdb")



'***** データが送信されたときはデータを追加 *****
If Request.Form("act") = "insert" Then
'***** フォームからデータを受け取る *****
name = Request.Form("name")
word = Request.Form("word")
entrydate = Now

'***** 名前とメッセージが空白でないときはデータ追加SQLを実行 *****
If name <> "" and word <> "" Then
StrSQL = "insert into T_Message (name,word,entrydate) " & _
"values ('" & name & "','" & word & "',#" & entrydate & "#)"
ObjConn.Execute(StrSQL)
End If
End If
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=x-sjis">
<title>ゲストブック</title>
</head>
<body>

<% Response.Write "<h2>ゲストブック</h2>" %>

<form method="POST" action="guestbook.asp">
<table border="1">
<tr>
<td>お名前</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>メッセージ</td>
<td><textarea rows="5" name="word" cols="30"></textarea></td>
</tr>
</table>
<input type="submit" name="sub" value="送信">
<input type="hidden" name="act" value="insert">
</form>

<%
'***** レコードセットの作成 *****
'***** テーブル「T_Message」のフィールド「id」が大きい順に並べ替え *****
Set ObjRS = Server.CreateObject("ADODB.Recordset")
StrSQL = "select * from T_Message order by id desc"
ObjRS.Open StrSQL, ObjConn

'***** データの表示 *****
Do Until ObjRS.EOF
%>
<hr>
<% = ObjRS("name") %>----------<% = ObjRS("entrydate") %><BR>
<% = ObjRS("word") %>
<%
ObjRS.MoveNext
Loop
%>

</body>
</html>
<%
'***** データベースへの接続を解除 *****
ObjRS.Close
Set ObjRS = Nothing
ObjConn.Close
Set ObjConn = Nothing
%>

[5166] Re:ACCESSの接続 Execute
投稿者:YasNet(管理人)さん 2005/08/01 18:21:07
こんにちはYasNet(管理人)です。

実行直前の
StrSQL
の内容を確認してみましたか?

きっとSQLが間違えているのでしょう。

それでは 失礼致します。

[5168] Re:ACCESSの接続 Execute
投稿者:りえさん 2005/08/02 10:01:48
コメントどうもありがとうございます。SQLをACCESSクエリーで実行してみました。うまく行きましたので、私にとって難題になっています。ぜひ、たすけて頂きたいのですが

[5170] Re:ACCESSの接続 Execute
投稿者:YasNet(管理人)さん 2005/08/02 12:05:19
こんにちは YasNet(管理人)です。

> コメントどうもありがとうございます。SQLをACCESSクエリーで実行してみました。うまく行きましたので、私にとって難題になっています。ぜひ、たすけて頂きたいのですが

って事は、権限がないんじゃないですか?
Webサーバから更新できるように権限を与えてみてください。

それでは 失礼致します。


[5171] Re:ACCESSの接続 Execute
投稿者:りえさん 2005/08/02 15:54:13
> って事は、権限がないんじゃないですか?
> Webサーバから更新できるように権限を与えてみてください。

Accessに一行のデータを最初から入れていて、guest.aspを実行するとこの一行はページに表示されています。そうすると、権限があるということではないでしょうか。只今は新たなデータ一行を追加しようとしたら、エラーになります。SQLは実行してみたので自分は問題はないと思っていますが。。違いますか。

If name <> "" and word <> "" Then
StrSQL = "insert into T_Message (name,word,entrydate) " & _
"values ('" & name & "','" & word & "',#" & entrydate & "#)"
ObjConn.Execute(StrSQL)
End If

また、WEBサーバーに権限を与えるというのはどういうことでしょうか。

[5172] Re:ACCESSの接続 Execute
投稿者:YasNet(管理人)さん 2005/08/02 21:11:00
こんにちは YasNet(管理人)です。

当サイトの『学習ASP』の第1章 ASPの基礎
あれ動かない
http://yasch.com/asp/Study/Part1.html#2
は参考になりますか

それでは 失礼致します。

[5623] Re:ACCESSの接続 Execute
投稿者:はやしさん 2006/01/27 12:49:12
こんにちは。

> [Microsoft][ODBC Microsoft Access Driver] 更新可能なクエリであることが必要です。

上記は Accessで複数テーブルからクエリを作成し、それを更新しようとしたときによく発生した思い出があります。

「SQLをACCESSクエリーで実行して、うまく行った」とのことなので原因不明なのですが、ちょっと気になるのがテーブル名です。
テーブル名「T_Message」です。この”_”アンダーバーが悪さしている可能性があるかもしれません。
可能であれば、アンダーバーの付いていないテーブル名にして試してみてください。

#見当違いだったらごめんなさい。。

[5625] Re:ACCESSの接続 Execute
投稿者:ビギナーズラックさん 2006/01/27 14:43:12
> 「SQLをACCESSクエリーで実行して、うまく行った」とのことなので原因不明なのですが、ちょっと気になるのがテーブル名です。
> テーブル名「T_Message」です。この”_”アンダーバーが悪さしている可能性があるかもしれません。
> 可能であれば、アンダーバーの付いていないテーブル名にして試してみてください。

茶々入れごめんなさい。
ただ、間違った認識を覚え込まれたら困るので(^^
とりあえず_は問題ないと思いますよ。
ただ-は問題ありますが...

[5629] Re:ACCESSの接続 Execute
投稿者:はやしさん 2006/01/27 16:59:13
> 茶々入れごめんなさい。
> ただ、間違った認識を覚え込まれたら困るので(^^
> とりあえず_は問題ないと思いますよ。
> ただ-は問題ありますが...

Accessでのスキーマとテーブルの区切りが一般的なカンマではなく、アンダーバーだったと思ったので、関係あるかなと安易な考えで書き込んでしまいました。

ご指摘ありがとうございます。

[5617] Re:ACCESSの接続 Execute
投稿者:Lightningさん 2006/01/26 16:48:25
発言者により削除されました!!



TreeBBS For ASP V.0.1.3
Program By YasNet