多条件查询的语法错误

zyh791211 2004-12-13 03:39:28

<%if c_id<>0 then '//判断查询分类,分类不为空。
select case action
case "1"
sql1=" select * from news where topic like '%"&searchkey&"%' and c_id="&c_id&""
case "2"
sql1=" select * from news where word like '%"&searchkey&"%' and c_id="&c_id&""
end select
else
select case action
case "1"
sql1=" topic like '%"&searchkey&"%'"
case "2"
sql1=" word like '%"&searchkey&"%'"
end select
end if

sql1= "select * from news where "&sql1&" order by id desc"
set rs=edxsky_2in1.exec(sql1,1)
if rs.eof And rs.bof then
Response.Write "<p align='center' > 对不起,没有查询到您需要的新闻!</p>"
else.....(省略)%>


错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] WHERE 子句语法错误。

...全文
122 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yqh1314 2004-12-14
  • 打赏
  • 举报
回复
四种情况只有一种出现! 而最大的可能就是 所以呢! 你哪个写法 多了个 WHERE 肯定错了
yqh1314 2004-12-14
  • 打赏
  • 举报
回复
我调试正确```
yqh1314 2004-12-14
  • 打赏
  • 举报
回复
sql="select * from news
if c_id<>0 then
select case action
case "1"
sql1= sql1& "| topic like '%" & searchkey& "%' and c_id="&c_id&"|"
case "2"
sql1= sql1& "| word like '%" & searchkey& "%' and c_id="&c_id&" |"
end select
else
select case action
case "1"
sql1= sql1& "| topic like '%" & searchkey& "%' |"
case "2"
sql1= sql1& "| word like '%" & searchkey& "%' |"
end select
end if
if len(sql1) > 0 then
sql1= left(sql1,len(sql1)-1)
sql1= replace(sql1,"||","and")
sql1= replace(sql1,"|"," and")
end if
sql = sql&sql1&" order by id desc"
gu1dai 2004-12-13
  • 打赏
  • 举报
回复
错了,多了个where,你照我说的做。这个代码我已经测试了
gu1dai 2004-12-13
  • 打赏
  • 举报
回复
sql1= "select * from news where "&sql1&" order by id desc"
将这句去掉
在开头if后加上
sql1="select * from news where "
然后
case "1"
sql1=sql1&" where topic like '%"&searchkey&"%'"
注意,这里并没有错
你再将set rs=conn.execute(sql1,1)
改为rs.open sql1,conn,1
ok了
[注意]查询字符串你那样写法很不科学
zyh791211 2004-12-13
  • 打赏
  • 举报
回复
apu~!
zyh791211 2004-12-13
  • 打赏
  • 举报
回复
if c_id<>0 then '//判断查询分类,分类不为空。
select case action
case "1"
sql1=" topic like '%"&searchkey&"%' and c_id="&c_id&""
case "2"
sql1=" word like '%"&searchkey&"%' and c_id="&c_id&""
end select
else
select case action
case "1"
sql1=" topic like '%"&searchkey&"%'"
case "2"
第一次帖错了,应该是:
sql1=" word like '%"&searchkey&"%'"
end select
end if

sql1= "select * from news where "&sql1&" order by id desc"
set rs=edxsky_2in1.exec(sql1,1)
if rs.eof And rs.bof then
Response.Write "<p align='center' > 对不起,没有查询到您需要的新闻!</p>"
else...
——————————————————————
继续求救
zyh791211 2004-12-13
  • 打赏
  • 举报
回复
(‰爱你不是三两天☆)
你有看到我还有
else
select case action
case "1"
sql1=" topic like '%"&searchkey&"%'"
case "2"
sql1=" word like '%"&searchkey&"%'"
end select
end if
即c_id=0的情况吗?
friendlyFour 2004-12-13
  • 打赏
  • 举报
回复
如果你的
if c_id<>0 then '//判断查询分类,分类不为空。
select case action
case "1"
sql1=" select * from news where topic like '%"&searchkey&"%' and c_id="&c_id&""
case "2"
sql1=" select * from news where word like '%"&searchkey&"%' and c_id="&c_id&""
end select
...(略了)
“为真”那你的sql1就变成了
select * from news where (select * from news where topic like '%"&searchkey&"%' and c_id="&c_id&"")order by id desc

select * from news where (select * from news where word like '%"&searchkey&"%' and c_id="&c_id&"")order by id desc

这就是你的语法错误,由于不了解你的要求,你自己改好了。你至少要有个sql2,y
zyh791211 2004-12-13
  • 打赏
  • 举报
回复
fogheart(淡雨蓝烟) 你和我的有什么不一样吗?
fogheart 2004-12-13
  • 打赏
  • 举报
回复
if c_id<>0 then '//判断查询分类,分类不为空。
select case action
case "1"
sql1=" topic like '%"&searchkey&"%' and c_id="&c_id&""
case "2"
sql1=" word like '%"&searchkey&"%' and c_id="&c_id&""
end select
else
select case action
case "1"
sql1=" topic like '%"&searchkey&"%'"
case "2"
sql1=" word like '%"&searchkey&"%'"
end select
end if

sql1= "select * from news where "&sql1&" order by id desc"
yqh1314 2004-12-13
  • 打赏
  • 举报
回复
sql="select * from news where c_id="&c_id&"
if action="1" then
sql1= sql1& "| topic like '%" & searchkey& "%' |"
elseif action="2" then
sql1= sql1& "| word like '%" & searchkey& "%' |"
end if
if len(sql1) > 0 then
sql1= left(sql1,len(strSql)-1)
sql1= replace(sql1,"||","and")
sql1= replace(sql1,"|"," and")
end if
sql = sql&sql1&" order by id desc"
yqh1314 2004-12-13
  • 打赏
  • 举报
回复
sql="select * from news where c_id="&c_id&"
select case action
case "1"
sql1= sql1& "| topic like '%" & searchkey& "%' |"
case "2"
sql1= sql1& "| word like '%" & searchkey& "%' |"
end select
if len(sql1) > 0 then
sql1= left(strSql,len(strSql)-1)
sql1= replace(strSql,"||","and")
sql1= replace(strSql,"|"," and")
end if
sql = sql&sql1&" order by id desc"
zyh791211 2004-12-13
  • 打赏
  • 举报
回复
求正确写法?
zyh791211 2004-12-13
  • 打赏
  • 举报
回复
怕别人看不懂edxsky_2in1.exec特注释:
edxsky_2in1.connstr="provider=sqloledb;" & _
"driver={SQL SERVER};" & _
"server=(local);" & _
"uid=edxsky_2in1;" & _
"pwd=edxsky_2in1;" & _
"database=edxsky_2in1;"
else
edxsky_2in1.connstr="DBQ="&server.mappath("data_sy/edxsky_data.asp")&";DRIVER={Microsoft Access Driver (*.mdb)};"
end if
zyh791211 2004-12-13
  • 打赏
  • 举报
回复
啊扑~!

28,391

社区成员

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

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