注册 登录
编程论坛 ASP技术论坛

看看为什么不能更新数据呢?(谢谢各位已经解决)

adsdomain 发布于 2008-05-15 19:35, 924 次点击
我写了个小程序,例如访问网址是[url]http://bbs.bccn.net/tc.asp?com=adsdomain[/url],如果是第一次使用该地址就记录adsdomain到数据库表tc中com字段,count字段作为记录该地址访问的次数,第一次为1.
如果第二次访问就更新1为2,以此类推。但是测试“更新数据失败”
代码如下:
tc.asp的代码
<!--#include file = pcconn.asp -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
<%
  com=request("com")
  sql = "select * from tc where [com]='"&com&"'"
  Set rs = Server.CreateObject("ADODB.RecordSet")
  rs.Open sql,conn,1,1
  if rs.recordcount<>0 then
    id=rs("id")
               com=rs("com")
        count=rs("count")
         ne=count+1
              
 Conn.Execute("update [tc] set count='"&ne&"' where id='"&id&"'")
      rs.close   
     '-------------------------------------------------------------------------

else
   Set rs = Server.CreateObject("ADODB.RecordSet")
  conn.Execute "insert into [tc] ([com]) values('"&com &"')"
      Response.Write("第一次访问记录")
end if

%>
</body>
</html>
<%
conn.close
set conn=nothing
%>

pcconn.asp 的代码
<%
set conn=Server.CreateObject("Adodb.Connection")
DBPath = Server.MapPath("pc.mdb")   'data.mdb为数据库文件名,datamdb/为路径,这两个要个数据库的文件名和路径保持一致!
conn.open "provider=Microsoft.Jet.oledb.4.0;data source="&DBpath
%>
数据库pc.mdb结构表名:tc
字段:id ,com,pccount
出错提示
错误类型:
Microsoft JET Database Engine (0x80040E14)
UPDATE 语句的语法错误。
/asptest/id2.asp, 第 26 行
错误行代码:
Conn.Execute("update [tc] set count='"&ne&"' where id='"&id&"'")

[[it] 本帖最后由 adsdomain 于 2008-5-21 18:55 编辑 [/it]]

[[it] 本帖最后由 adsdomain 于 2008-5-28 20:30 编辑 [/it]]
13 回复
#2
不夜星空2008-05-15 21:52
if rs.recordcount<>0 then
               id=rs("id")
               com=rs("com")
               count=rs("count")
               ne=count+1
              
               Conn.Execute("update [tc] set count='"&ne&"' where id='"&id&"'")
                rs.close
我看了还真的无语啊!   楼下你说呢!
count 是关键字!

[[it] 本帖最后由 不夜星空 于 2008-5-15 22:06 编辑 [/it]]
#3
lele20072008-05-16 11:42
我是楼下,但我不知道! 哈哈!开个玩笑
#4
dhdhzzw2008-05-16 14:51
出错提示
错误类型:
Microsoft JET Database Engine (0x80040E14)
UPDATE 语句的语法错误。
/asptest/id2.asp, 第 26 行
请看清除错误位置。发错误位置的代码/
#5
tianyu1232008-05-16 18:59
Conn.Execute("update [tc] set count='"&ne&"' where id='"&id&"'")

count id 字段是什么类型数据
#6
adsdomain2008-05-18 21:17
清除错误位置后可以运行啊,就是每次访问都添加一个记录,count是数字id是自动编号的,count如果因为关键字不能使用但是我也看到其他程序也在使用这个也没有什么问题啊?请教各位了.
#7
adsdomain2008-05-21 18:18
已经把count替换了,但是现实数据类型不匹配,是怎么解释啊?请教各位大侠了
#8
yms1232008-05-21 18:24
Conn.Execute("update [tc] set count='"&ne&"' where id='"&id&"'")
使用rs自身的方法更新可以减少一些SQL语句错误
set rsUpdate=Server.CreateObject("ADODB.RecordSet")
rsUpdate.Open "select * from [tc] where id='"&id&"'",conn,1,3
if not rsUpdate.EOF Then
   rsUpdate("count")=ne
   rsUpdate.update
Else
   Response.Write "没有找到要更新的记录"
End IF
#9
hxfly2008-05-21 20:56
Conn.Execute("update [tc] set [count]='"&ne&"' where id='"&id&"'")
count应该是SQL的关键字,作为字段使用的时候需要加[]
#10
adsdomain2008-05-24 18:19
谢谢yms123,替换后显示数据类型不匹配.这是什么意思啊》?
#11
adsdomain2008-05-25 16:55
参考下面一段文章看看--------------------------------------------------------------------------------------------------------------
标准表达式中数据类型不匹配(Access)
这个问题我记得刚接触时就出现这个问题。结果今天又碰到这个问题,花了N个小时才发现问题的所在(还没想出解决方法)

在Access中,是无法使用存储过程的,但可以使用文本命令,如
update news set title=@title,types=@types,context=@context where id=@id ID字段类型为自动增加,这句语句放在sql里是不会有问题的,但在access却有一个明显的错误:标准表达式中数据类型不匹配(另外一种结果就是不会更新该条记录) 而造成的这个问题的原因就在于id的字段类型,在access where id=@id 如果id类型为数字,那么就不能存在''(在sql这里''是指定一个字段的值用,如'aaa'),而上面的文本命令的最后执行结果是update news set title='标题',types='类型' ,context='内容' where id='1' ,不知道这种错误算什么错误:( 而正确的语句应该是update news set title='标题',types='类型' ,context='内容' where id=1 ,偏偏delete 语句又不会出现上面所说的错误,如:delete from news where id=@id
发现数据库用access所花的编写代码的时间远远超出了用sql的代码编写时间,而且用access经常出现莫名错误,更主要就是可能有非法字符如果不使用文本命令就会执行错误,怀念sql,

[[it] 本帖最后由 adsdomain 于 2008-5-28 20:27 编辑 [/it]]
#12
hmhz2008-05-26 07:57
Conn.Execute("update [tc] set [count]="&ne&" where id="&id)
#13
zhixiao4762008-05-26 08:04
#14
adsdomain2008-05-28 20:29
谢谢大家都关注,本问题已经解决!其实就是在id='"&id&"'")去掉两个单引号就行了如下:
Conn.Execute("update [tc] set pccount='"&ne&"' where id="&id&"")
1