设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 135|回复: 9
打印 上一主题 下一主题

各位帮我看看我的搜索功能哪里出问题了?

[复制链接]
跳转到指定楼层
1#
发表于 2010-1-10 23:59:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
说明:共4个搜索条件,分别为class1,class2,城市和关键字
      其中class1 和class2 两者不同时为空,城市(province,city)和关键字(keywords)可以为空
代码如下,请帮我看看那里出问题了,错误提示为ADODB.Recordset (0x800A0BB9)参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。(连接数据库正确)或者有没有其他的方法可行。我觉得这样太复杂了,谢谢了!
<%
set rs2=server.CreateObject("adodb.recordset")

if request("class1")="" and request("class2")<>"" then
   if request("province")="" and request("keywords")="" then
   sql="select * from  ad where class2='"&request("class2")&"'"
   else
     if request("province")<>"" and request("keywords")<>"" then
     sql="select * from  ad where class2='"&request("class2")&"' and province='"&request("province")&"' and city='"&request("city")&"' and keywords like '%"&request("keywords")&"%'"
     else
       if request("province")<>"" and request("keywords")="" then
       sql="select * from  ad where class2='"&request("class2")&"' and province='"&request("province")&"' and city='"&request("city")&"'"
       else
          if request("province")="" and request("keywords")<>"" then
          sql="select * from  ad where class2='"&request("class2")&"' and keywords like '%"&request("keywords")&"%'"
          end if
       end if
     end if
    end if
else
if request("class1")<>"" and request("class2")="" then
   if request("province")="" and request("keywords")="" then
   sql="select * from  ad where class1='"&request("class1")&"'"
   else
     if request("province")<>"" and request("keywords")<>"" then
     sql="select * from  ad where class1='"&request("class1")&"' and province='"&request("province")&"' and city='"&request("city")&"' and keywords like '%"&request("keywords")&"%'"
     else
       if request("province")<>"" and request("keywords")="" then
       sql="select * from  ad where class1='"&request("class1")&"' and province='"&request("province")&"' and city='"&request("city")&"'"
       else
          if request("province")="" and request("keywords")<>"" then
          sql="select * from  ad where class1='"&request("class1")&"' and keywords like '%"&request("keywords")&"%'"
          end if
        end if
      end if
    end if
else
if request("class1")<>"" and request("class2")<>"" then
   if request("province")="" and request("keywords")="" then
   sql="select * from  ad where class2='"&request("class2")&"' and class1='"&request("class1")&"'"
   else
      if request("province")<>"" and request("keywords")<>"" then
      sql="select * from  ad where class2='"&request("class2")&"'  and class1='"&request("class1")&"' and province='"&request("province")&"' and city='"&request("city")&"' and keywords like '%"&request("keywords")&"%'"
      else
        if request("province")<>"" and request("keywords")="" then
        sql="select * from  ad where class2='"&request("class2")&"' and class1='"&request("class1")&"' and province='"&request("province")&"' and city='"&request("city")&"'"
        else
          if request("province")="" and request("keywords")<>"" then
          sql="select * from  ad where class2='"&request("class2")&"'  and class1='"&request("class1")&"' and keywords like '%"&request("keywords")&"%'"
          end if
        end if
      end if
   end if
   end if
   end if
end if

rs2.open str,conn,1,1
%>
2#
发表于 2010-1-10 23:59:55 | 只看该作者
我不看这么长的生成SQL语句的代码,你自己检查最后生成的SQL语句有没有问题……遇到问题再想怎么办
回复 支持 反对

使用道具 举报

3#
发表于 2010-1-10 23:59:59 | 只看该作者
完全可以这样写

if …… then
……
elseif …… then
……
end if
回复 支持 反对

使用道具 举报

4#
发表于 2010-1-11 00:00:03 | 只看该作者
谢谢各位的指点,我再试试看
回复 支持 反对

使用道具 举报

5#
发表于 2010-1-11 00:00:07 | 只看该作者
免费内容:
sql="Select BellID,SongName,SingerName,Price,AvailabilityDate,SpName,Region,DownloadsNumber,DownloadsDate,YearMonth from DownloadsData where"
if music<>"" then sql=sql&" SongName like '%"&music&"%' AND"
if m_name<>"" then sql=sql&" SingerName like '%"&m_name&"%' AND"
if spname<>"" then sql=sql&" SpName like '%"&spname&"%' AND"
if region<>"" then sql=sql&" Region like '%"&region&"%' AND"
if date1<>"" and date2="" then sql=sql&" YearMonth ='"&date1&"-"&day1&"' AND"
if date2<>"" and date1="" then sql=sql&" YearMonth ='"&date2&"-"&day1&"' AND"
if date1<>"" and date2<>"" then sql=sql&" YearMonth >= '"&date1&"-"&day1&"' AND YearMonth <= '"&date2&"-"&day1&"' AND"
DownloadsDate>'"&month1&"' AND"
if right(sql,5)="WHERE" then sql=left(sql,clng(len(sql))-5) '解决所有参数都为空的情况
if right(sql,3)="AND" then sql=left(sql,clng(len(sql))-3) '去掉参数最后的and


用这个吧?我看比你的要好看明白的多,也没有你的麻烦
想怎么查询就怎么查询
这只是一种方法
回复 支持 反对

使用道具 举报

6#
发表于 2010-1-11 00:00:11 | 只看该作者
怎么都不找本质联系呢……SQL语句不对不会提示这个错误。
回复 支持 反对

使用道具 举报

7#
发表于 2010-1-11 00:00:15 | 只看该作者
错误提示仍为ADODB.Recordset (0x800A0BB9)参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
这个问题应该不是你的代码问题
你应该检查一下数据库连接正确不?
有没有包含conn.asp(数据库连接文件)?
conn.asp样本:
<%dim conn,connstr
set conn = server.createobject("adodb.connection")
connstr= "provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source = " & Server.MapPath("****.mdb")
if err then
err.clear
else
conn.open connstr
end if
Sub closeconn()
    conn.close
    set conn=nothing
end sub
on error resume next%>
回复 支持 反对

使用道具 举报

8#
发表于 2010-1-11 00:00:19 | 只看该作者
我把搜索语句改成下面的代码了,可还是不行,错误提示仍为ADODB.Recordset (0x800A0BB9)参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
弄了几天了,再次麻烦各位帮我看看吧,这次增加了一个搜索条件audit:
str="where audit='1'"
  if len(request("class1"))<>0 then
  str=str&"and class1='"&request("class1")&"'"
  end if
  if len(request("class2"))<>0 then
  str=str&"and class2='"&request("class2")&"'"
  end if
  if request("province")<>"0" then
  str=str&"and province='"&request("province")&"' and city='"&request("city")&"'"
  end if
  if len(request("keywords"))<>0 then
  str=str&"and  keywords like '%"&request("keywords")&"%'"
  end if
  set rs2=server.CreateObject("adodb.recordset")
  sql="select * from ad" &str
  rs2.open sql,conn,1,1
回复 支持 反对

使用道具 举报

9#
发表于 2010-1-11 00:00:24 | 只看该作者
先把要搜索的四个关键接收过来.再用IF判断写SQL语句.代码简单明了,你那样太乱了!
回复 支持 反对

使用道具 举报

10#
发表于 2010-1-11 00:00:28 | 只看该作者
我试试,谢谢6楼了!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 21:15 , Processed in 0.069972 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表