照着书上的例子做居然报错,为什么

d_dog 2004-12-17 02:22:35
运行后报这个错
错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]第 1 行: '=' 附近有语法错误。
isAuthor.asp, 第 7 行

<%
If Session("UserName") <> "admin" Then
NewsId = Request("Id")
'根据文章编号读取文章信息
set rsNews = Server.CreateObject("ADODB.RecordSet")
sql = "SELECT * FROM News WHERE Id=" & Trim(NewsId)
set rsNews = Conn.Execute(sql)
Set Rs=conn.Execute(sql) (说是这句有错)
If rsNews.EOF Then
Response.Write "指定文章不存在"
Response.End
Else
'判断用户权限,是否可以维护文章,管理员可以编辑所有文章,编辑者只能修改自己的文章
If rsNews("Poster") <> Session("UserName") Then
Response.Write "不是admin或文章的发布者,无权修改!"
Response.End
End If
End If
End If
%>
...全文
123 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
yrs007 2004-12-17
  • 打赏
  • 举报
回复
这样试试还有问题吗?
<%
If Session("UserName") <> "admin" Then
NewsId = Request("Id")
IF IsNumeric(NewsIs)=true then
'根据文章编号读取文章信息
set rsNews = Server.CreateObject("ADODB.RecordSet")
sql = "SELECT * FROM News WHERE Id="&NewsId&""
set rsNews = Conn.Execute(sql)
Set Rs=conn.Execute(sql) (说是这句有错)
If rsNews.EOF Then
Response.Write "指定文章不存在"
Response.End
Else
'判断用户权限,是否可以维护文章,管理员可以编辑所有文章,编辑者只能修改自己的文章
If rsNews("Poster") <> Session("UserName") Then
Response.Write "不是admin或文章的发布者,无权修改!"
Response.End
End If
End If
Else
response.write "NewsId获取的ID不是数字!"
End If
End If
%>
'Set Rs=conn.Execute(sql) (说是这句有错)
这句出错是因为执行了SQL语句出错呀..你应该去查看SQL的语句呀..这里是没有问题的.
运行一下上面的看得到什么结果?
Aimar168 2004-12-17
  • 打赏
  • 举报
回复
纠正一下,改成rsNews .open sql,conn,1,1
Aimar168 2004-12-17
  • 打赏
  • 举报
回复
set rsNews = Server.CreateObject("ADODB.RecordSet") '去掉这一句
sql = "SELECT * FROM News WHERE Id=" & Trim(NewsId)
set rsNews = Conn.Execute(sql) '或者改这一句

应该可靠,try:
去掉第一句,或者把第三句改为rs.open sql,conn,1,1
fogheart 2004-12-17
  • 打赏
  • 举报
回复
NewsId = Trim(Request("Id"))
在这里判断一下NewsId是否为数值类型,如果是,再执行以下语句
'根据文章编号读取文章信息
sql = "SELECT * FROM News WHERE Id=" & NewsId
19az 2004-12-17
  • 打赏
  • 举报
回复
书上的怎么了,书也是人写的,怎么可能没有错呢


明显的错误就是 NewsId = Request("Id"),没有得到值,导致sql语句等号后没有参数,故报错
shijian58 2004-12-17
  • 打赏
  • 举报
回复
尽信书则不如无书
leeyeefeng2004 2004-12-17
  • 打赏
  • 举报
回复
书上的代码我以前吃过N次亏~~~不可靠~~~
d_dog 2004-12-17
  • 打赏
  • 举报
回复
conn打开了
好怪。。。。。。。。。
我再看看书好了。。。。
rheleven 2004-12-17
  • 打赏
  • 举报
回复
Microsoft OLEDBProviderforODBCDrivers(0x80040E14)-->sql语句出错(字段名错误,或数据类型不匹配)

或者是where 后面得条件中字段出错
rheleven 2004-12-17
  • 打赏
  • 举报
回复
没有打开 conn 连接吧
d_dog 2004-12-17
  • 打赏
  • 举报
回复
这个是为了判断用户是否管理员的代码。。。。。。。。
如果不是管理员则只能发布和编辑自己发表的文章。。。。
dh20156 2004-12-17
  • 打赏
  • 举报
回复
检查NewsId是否有值及其类型,检查字段Id类型,conn是否存在
d_dog 2004-12-17
  • 打赏
  • 举报
回复
- -
错了错了。。。


set rsNews = Conn.Execute(sql)

这句报错才对。。。。
lienzhu 2004-12-17
  • 打赏
  • 举报
回复
<%
If Session("UserName") <> "admin" Then
NewsId = Request("Id")
'根据文章编号读取文章信息
sql = "SELECT * FROM News WHERE Id=" & Trim(NewsId)
set rsNews = Conn.Execute(sql)
If rsNews.EOF Then
Response.Write "指定文章不存在"
Response.End
Else
'判断用户权限,是否可以维护文章,管理员可以编辑所有文章,编辑者只能修改自己的文章
If rsNews("Poster") <> Session("UserName") Then
Response.Write "不是admin或文章的发布者,无权修改!"
Response.End
End If
End If
End If
abcdefg3305 2004-12-17
  • 打赏
  • 举报
回复
不知道是不是这样
diya 2004-12-17
  • 打赏
  • 举报
回复
Set Rs=conn.Execute(sql) 去掉这句,书本上的例子不一定是正确的。
abcdefg3305 2004-12-17
  • 打赏
  • 举报
回复
昏,把第一行改成
If not Session("UserName") = "admin" Then
lienzhu 2004-12-17
  • 打赏
  • 举报
回复
Set Rs=conn.Execute(sql) 这句话没用

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧