asp多条件查询

在index.asp的form中,有多个input来输入查询条件,查询条件有“姓名”,“地址”,“电话”,“QQ”。name属性分别为:“names”,“address”... 在index.asp的form中,有多个input来输入查询条件,查询条件有“姓名”,“地址”,“电话”,“QQ”。name属性分别为:“names”,“address”,“TEL”,“QQ”,form中各项属生通过post方式传到result.asp。
result.asp中实现查询数据库中的数据。数据库名为data.mdb,表名为info,各字段分别为names、address、TEL、QQ。已经用resqust接受到了index.asp中post来的值了。现在要实现的是查询。当index.asp中input不为空的时候,查询这些条件,条件用and连接。在result.asp中显示查询的结果。当index.asp的input输入为空的时候,则不查询此条件。
请高手帮忙写下result.asp代码。万分感谢。

<!-- #include file="conn.asp" -->
<%
names=Request.Form("names")
address=Request.Form("address")
tel=Request.Form("tel")
qq=Request.Form("qq")
%>
<div name="hxqsj" aline="center">
<table border="0" width="100%">
<tr>
<td width="8%">姓名</td>
<td width="8%">地址</td>
<td width="8%">电话</td>
<td width="8%">QQ</td>
</tr>
</table>
</div>
<%
set rs=server.CreateObject("adodb.recordset")
sql="select * from info where"
if names<>"" then
sql=sql + " names='%"&names&"%' "
end if
if address<>"" then
sql=sql + " and address='%"&address&"%' "
end if
if tel<>"" then
sql=sql + " and tel='%"&tel&"%'"
end if
if qq<>"" then
sql=sql + " and qq like '%"&qq&"%'"
end if
sql=sql + " order by id "

rs.open sql,conn,1,1
Do While Not rs.eof
%>
<div name="hxqsj" aline="center">
<table border="0" width="100%">
<tr>
<td width="8%"><%=rs("names")%></td>
<td width="8%"><%=rs("address")%></td>
<td width="8%"><%=rs("tel")%></td>
<td width="8%"><%=rs("qq")%></td>
</tr>
</table>
</div>

<%
rs.movenext
Loop
rs.close
set rs=nothing
set conn=nothing
%>
至少一个参数没有被指定值。错在哪?请指正。
假如设tel字段和QQ字段为双精度数值型数据呢?
展开
 我来答
hpjlucky
推荐于2016-03-04 · TA获得超过134个赞
知道答主
回答量:104
采纳率:0%
帮助的人:68.3万
展开全部
你这种写法是错误的:
第一:当names这个参数值为空的时个,你的查询语句就会出错!
第二:asp中的连接符号不是“+” 而是 “&”
综上,你应该将条件查询语句改成这样的
<!-- #include file="conn.asp" -->
<%
names=Request.Form("names")
address=Request.Form("address")
tel=Request.Form("tel")
qq=Request.Form("qq")
%>
<div name="hxqsj" aline="center">
<table border="0" width="100%">
<tr>
<td width="8%">姓名</td>
<td width="8%">地址</td>
<td width="8%">电话</td>
<td width="8%">QQ</td>
</tr>
</table>
</div>

<%
set rs=server.CreateObject("adodb.recordset")
sql="select * from info where 1=1"
if names<>"" then
sql=sql & " and names='%"&names&"%' "
end if
if address<>"" then
sql=sql & " and address='%"&address&"%' "
end if
if tel<>"" then
sql=sql & " and tel='%"&tel&"%'"
end if
if qq<>"" then
sql=sql & " and qq like '%"&qq&"%'"
end if
sql=sql & " order by id "

rs.open sql,conn,1,1
Do While Not rs.eof
%>
<div name="hxqsj" aline="center">
<table border="0" width="100%">
<tr>
<td width="8%"><%=rs("names")%></td>
<td width="8%"><%=rs("address")%></td>
<td width="8%"><%=rs("tel")%></td>
<td width="8%"><%=rs("qq")%></td>
</tr>
</table>
</div>

<%
rs.movenext
Loop
rs.close
set rs=nothing
set conn=nothing
%>
这样就应该不会有错了!
毛教乌孙之卉
2020-05-03 · TA获得超过3791个赞
知道大有可为答主
回答量:3145
采纳率:32%
帮助的人:149万
展开全部
可以在你的“查询”提交后,在原来表一的位置显示表二,那么,这就要求你在显示表一和表二之前,准确告诉页面,你要显示的是什么内容。
我教你个相对简单也好理解的方法:
IF
Request.Form("submit")<>"提交"
Then
SQLStr
=
"Select
*
From
Tablename"'先确定你要显示的表的内容;
Else
SQLStr
=
"Select
*
From
Tablename
Where
名称='"&Request.Form("名称")&"'"
and
.....(这里把从表单获得的条件补充完整,最好在这之前把获得的内容验证一下非空)
End
IF
Conn.Execute(SQLStr)
表格
--------------------------
因为你表一和表二格式一样,所以不用分那么清了,就一个表格就可以了,由于上面已经告诉页面要显示的东西了。换言之,要显示的是表一还是表二,在前面已经告诉页面了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
欲速则不达X
2010-07-16 · TA获得超过177个赞
知道小有建树答主
回答量:274
采纳率:0%
帮助的人:250万
展开全部
ASP 连接字符串应该用&而不是+。
另外提点意见:
1.这个SQL语句写的如果是所有条件都为空的话,会出错,
所以你可以把第一句的改一下。
sql="select * from info where"
改为
sql="select * from info where 1=1 and "
这样即使全为空也不会出错.
2.查询条件中使用=号时,后面不需要再用%号了.

3.应该把传过来的值用trim把左右空格去掉,不然有空格时查不到你想要的数据.

一点经验.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
steamlin1983
2010-07-16
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
set rs=server.CreateObject("adodb.recordset")
sql="select * from info where 1=1 "'最好就加个1+1,如果下在的条件,没一个是存在的。那这句SQL语句不是会报错啊?
if names<>"" then
sql=sql & " and names like '%"&names&"%' "
end if
if address<>"" then
sql=sql & " and address like '%"&address&"%' "
end if
if tel<>"" then
sql=sql & " and tel like '%"&tel&"%'"
end if
if qq<>"" then
sql=sql & " and qq like '%"&qq&"%'"
end if
sql=sql + " order by id "
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
祁航锺珏
2019-09-06 · TA获得超过4021个赞
知道大有可为答主
回答量:3125
采纳率:34%
帮助的人:433万
展开全部
sql="where
1"if
1
and
2
and
3
and
4
and
5
thensql=sql&"
1
and
2
and
3
and
4
and
5"elseif
1
and
2
thensql=sql&"
1
and
2
"elseif
1
and
3
thensql=sql&"
1
and
3
"elseif
1
and
4
thensql=sql&"
1
and
4
"elseif
1
and
5
thensql=sql&"
1
and
5"elseif
2
and
3
then.......如此判断所有自己要做的情况
end
if
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式