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

关于点击率编码问题。

handveil 发布于 2009-09-24 21:26, 871 次点击
编码如下:
<%
sql="select * from table1 where id="&clng(request("id"))
rs.open sql,conn,1,1
set rs1=server.createobject("adodb.recordset")
sql1="update table1 set click="&rs("click")+1& " where id="&clng(request("id")) ‘第11行
rs1.open sql1,conn,1,3
%>

页面中通过:<td>点击次数:<%=rs("click")+1%></td>来实现。
其中,click字段设为char,长度10

但报错:
错误类型:
Microsoft OLE DB Provider for SQL Server (0x80040E14)
在关键字 'where' 附近有语法错误。
/website/person.asp, 第 11 行

谢谢。

10 回复
#2
aspic2009-09-25 08:30
<%
conn.execute("update table1 set click=click+1 where id="&clng(request("id")))
%>一句话应该就可以搞定了
#3
handveil2009-09-25 09:17
以下是引用aspic在2009-9-25 08:30:17的发言:

一句话应该就可以搞定了





我加了后
报错:
错误类型:
Microsoft VBScript 运行时错误 (0x800A01A8)
缺少对象: 'Provider=SQLOLEDB; U'
/mywebsite/person.asp, 第 9 行



我用的是sql server 2000。和这有关系吗?
#4
aspic2009-09-25 09:28
连接数据库的代码怎么写的
#5
handveil2009-09-25 10:57
以下是引用aspic在2009-9-25 09:28:38的发言:

连接数据库的代码怎么写的
<%
set rs=server.createobject("adodb.recordset")
set conn=server.CreateObject("adodb.Connection")

SqlLocalName    ="(local)"    '连接IP  [ 本地用 (local) 外地用IP ]
    SqlUserName    ="lalalala"        'SQL用户名
    SqlPassword    ="0000000000"        'SQL用户密码
SqlDataBase    ="database1"    '数据库名
    SqlProvider    ="SQLOLEDB"    '驱动程序 [ SQLOLEDB  SQLNCLI ]
    conn="Provider="&SqlProvider&"; User ID="&SqlUserName&"; Password="&SqlPassword&"; Initial CataLog="&SqlDataBase&"; Data Source="&SqlLocalName&";"
%>


其它网页连接数据库都没有问题。
#6
孤独冷雨2009-09-25 11:19
con.open conn
sql1="update table1 set click=click+1 where id="&request("id") ‘第11行
con.execute sql1

[ 本帖最后由 孤独冷雨 于 2009-9-25 11:21 编辑 ]
#7
aspic2009-09-25 13:31
程序代码:
<%
set rs=server.createobject("adodb.recordset")
set conn=server.CreateObject("adodb.Connection")
 
SqlLocalName    ="(local)"    '连接IP  [ 本地用 (local) 外地用IP ]
SqlUserName    ="lalalala"        'SQL用户名
SqlPassword    ="0000000000"        'SQL用户密码
SqlDataBase    ="database1"    '数据库名
SqlProvider    ="SQLOLEDB"    '驱动程序 [ SQLOLEDB  SQLNCLI ]
ConnString="Provider="&SqlProvider&"; User ID="&SqlUserName&"; Password="&SqlPassword&"; Initial CataLog="&SqlDataBase&"; Data Source="&SqlLocalName&";"
conn.Open ConnString

conn.execute("update table1 set click=click+1 where id="&clng(request("id")))
%>
#8
handveil2009-09-25 19:44
回复 楼主 handveil
我将代码改成这样:
<% sql="select * from table1 where id="&clng(request("id"))
rs.open sql,conn,1,1
set rs1=server.createobject("adodb.recordset")
sql1="update table1 set click=click+1 where id="&clng(request("id"))
rs1.open sql1,conn,1,3
%>

没有报错,但是<td>点击次数:<%=rs("click")+1%></td>在网页上只显示:点击次数:


#9
handveil2009-09-25 19:48
使用execute后,那是报错

错误类型:
Microsoft VBScript 运行时错误 (0x800A01A8)
缺少对象: 'Provider=SQLOLEDB; U'
/website/person.asp, 第 9 行


采用下面这种点击次数的代码,
sql1="update table1 set click="&rs("click")+1& " where id="&clng(request("id")) ‘第11行
rs1.open sql1,conn,1,3  在其它网页能显示出来。

对了,click=click+1和click="&rs("click")+1& " 的差别是不是主要在click字段类型的不同?
#10
aspic2009-09-26 08:39
程序代码:
<%  
set rs=server.createobject("adodb.recordset")  
set conn=server.CreateObject("adodb.Connection")  
 
SqlLocalName    ="(local)"    '连接IP  [ 本地用 (local) 外地用IP ]  
SqlUserName    ="lalalala"        'SQL用户名  
SqlPassword    ="0000000000"        'SQL用户密码  
SqlDataBase    ="database1"    '数据库名  
SqlProvider    ="SQLOLEDB"    '驱动程序 [ SQLOLEDB  SQLNCLI ]  
ConnString="Provider="&SqlProvider&"; User ID="&SqlUserName&"; Password="&SqlPassword&"; Initial CataLog="&SqlDataBase&"; Data Source="&SqlLocalName&";"  
conn.Open ConnString
 
conn.execute("update table1 set click=click+1 where id="&clng(request("id")))  
'显示调用<%=Click%>
Set Click = conn.execute("Slect click form table1 id="&clng(request("id")))
%>
click="&rs("click")+1& " 这样做本来就多余了
#11
handveil2009-09-27 16:11
以下是引用aspic在2009-9-26 08:39:40的发言:

<%  
set rs=server.createobject("adodb.recordset")  
set conn=server.CreateObject("adodb.Connection")  
 
SqlLocalName    ="(local)"    '连接IP  [ 本地用 (local) 外地用IP ]  
SqlUserName    ="lalalala ...
根据你的修改后,显示还是连接的问题。不过我的其它网页都能打开,并且也能返回内容和数值。是不是可能根本不是连接的问题?
1