| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 491 人关注过本帖
标题:[求助]查询问题
只看楼主 加入收藏
blacks99
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-7-27
收藏
 问题点数:0 回复次数:6 
[求助]查询问题

各位大哥,小弟是刚学ASP,需要一个查询代码实现以下情况:
姓名:(输入姓名可以查询所有姓名一样的人,或包含其中文字的人,比如:输入张三,就出现所有的张三,输入张,就出现所有包含张的人)
性别:(输入男,就出现所有男性。如果上面输入了姓名张三,就出现姓名为张三,性别为男的人。)
年龄:(输入20,就出现20岁的人,如果输入上面的性别,就出本性别下的所有20的人,如果输入张三,再输入20,就出现符合条件的。输入张三、男、20也出现符合条件的)
这个怎么做啊?
拜托各位大哥帮帮忙。

搜索更多相关主题的帖子: 查询 
2007-07-20 15:06
jtj123456
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2007-7-18
收藏
得分:0 
select * from table where name like '张%'and sex='男'and age between '20' and '30'
看合适不?
2007-07-20 17:25
blacks99
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-7-27
收藏
得分:0 
谢谢,好像不行啊。
用select * from table where name like '张%'可以满足第一个条件。但是加上and sex='男'就不行了。

2007-07-21 09:25
blacks99
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-7-27
收藏
得分:0 

发下代码大家看下吧。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
<form action="cx.asp" method="post" name="form1">
<p>查询条件:</p>
<p>姓名:
<label>
<input name="x1" type="text" id="x1">
</label>
</p>
<p>性别:
<label>
<input type="radio" name="x2" value="男">

</label>
<label>
<input type="radio" name="x2" value="女">

</label>
</p>
<p>年龄:
<label> </label>
<label>
<input name="x3" type="text" id="x3">
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="提交">
</label>
</p>
</form>
<p>
<%
x1=request.Form("x1")
x2=request.Form("x2")
x3=request.Form("x3")
if x1<>"" or x2<>"" or x3<>"" then

set conn=server.CreateObject("adodb.connection")
conn.connectionstring="provider=microsoft.jet.oledb.4.0;data source="&server.MapPath("lx.mdb")
conn.open
set rs=server.CreateObject("adodb.recordset")
sql="select * from yh where xm like '"&"%"&x1&"%' and xb='"&x2&"'"
rs.open sql,conn,1,1
if rs.eof or rs.bof then
response.Write("没有您要的结果!")
else

%>
您查询的结果是:</p>
<table width="80%" border="1" cellspacing="0" cellpadding="0">
<%
do while not rs.eof
%>
<tr>
<td width="13%" height="25" align="center">姓名:</td>
<td width="87%"><%=rs("xm")%></td>
</tr>
<tr>
<td height="25" align="center">性别:</td>
<td><%=rs("xb")%></td>
</tr>
<tr>
<td height="25" align="center">年龄:</td>
<td><%=rs("nl")%></td>
</tr>
<%
rs.movenext
loop
%>
</table>
<%

rs.close
set rs=nothing
conn.close
set conn=nothing
end if
end if
%>
<p>x1=<%=x1%> </p>
<p>x2=<%=x2%> </p>
<p>x3=<%=x3%> </p>
<p><a href="index.asp">返回</p>
</body>
</html>

涂红的那个不要and xb='"&x2&"'"可以实现用姓名查询。加上就不行了。


2007-07-21 09:27
MikeFT
Rank: 1
来 自:青岛
等 级:新手上路
帖 子:644
专家分:0
注 册:2006-11-1
收藏
得分:0 
x1,x2,x3需要单独处理!!!
不能直接用and联在一起!!!

Live And Learn !!!
2007-07-21 10:23
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
收藏
得分:0 

if x1<>"" or x2<>"" or x3<>"" then 这是你的条件,假设姓名、性别、年龄都不为空时才成立
set conn=server.CreateObject("adodb.connection")
conn.connectionstring="provider=microsoft.jet.oledb.4.0;data source="&server.MapPath("lx.mdb")
conn.open
set rs=server.CreateObject("adodb.recordset")
sql="select * from yh where xm like '%" & x1 & "%" and xb='" & x2 & "'"
===========================================
按照你的说法,要有不同的判断的
set conn=server.CreateObject("adodb.connection")
conn.connectionstring="provider=microsoft.jet.oledb.4.0;data source="&server.MapPath("lx.mdb")
conn.open
set rs=server.CreateObject("adodb.recordset")
if x1<>"" and x2="" and x3="" then
sql="select * from yh where xm like '%" & x1 & "%'"
elseif x1="" and x2<>"" and x3="" then
sql="select * from yh where xb = '" & x2 & "'"
elseif x1="" and x2="" and x3<>"" then
sql="select * from yh where nl = '" & x1 & "'"
esleif x1<>"" and x2<>"" and x3<>"" then
sql="select * from yh where xm like '%" & x1 & "%'" and xb='" & x2 & "'" and nl='" & x3 & "'"
rs.open sql,conn,1,1
if rs.eof or rs.bof then
response.Write("没有您要的结果!")
else
...........

上面的判断只是判断了三个值中一个不为空和全不为空的情况,还有两个不为空时的情况没有写。

2007-07-21 10:44
blacks99
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-7-27
收藏
得分:0 

谢谢大家了.终于找到方法解决了,请大家看看这个方案比较好.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
<form action="cx.asp" method="post" name="form1">
<p>查询条件:</p>
<p>姓名:
<label>
<input name="x1" type="text" id="x1">
</label>
</p>
<p>性别:
<label>
<input type="radio" name="x2" value="男">

</label>
<label>
<input type="radio" name="x2" value="女">

</label>
</p>
<p>年龄:
<label> </label>
<label>
<input name="x3" type="text" id="x3">
</label>
</p>
<p>
<label>
<input type="submit" name="Submit" value="提交">
</label>
</p>
</form>
<p>
<%
a=0
x1=request.Form("x1")
x2=request.Form("x2")
x3=request.Form("x3")
if x1<>"" or x2<>"" or x3<>"" then

set conn=server.CreateObject("adodb.connection")
conn.connectionstring="provider=microsoft.jet.oledb.4.0;data source="&server.MapPath("lx.mdb")
conn.open
set rs=server.CreateObject("adodb.recordset")
sql="select * from yh where 1=1" '1=1是避免所有查询字段为空时出错.
if x1 <> "" then
sql=sql & "and xm like '%"&x1&"%'"
end if
if x2<> "" then
sql=sql & "and xb='"&x2&"'"
end if
if x3<>"" then
sql=sql & "and nl='"&x3&"'"
end if

rs.open sql,conn,1,1
if rs.eof or rs.bof then
response.Write("没有您要的结果!")
else

%>
您查询的结果是:</p>
<table width="80%" border="1" cellspacing="0" cellpadding="0">
<%
do while not rs.eof
%>
<tr>
<td width="13%" height="25" align="center">姓名:</td>
<td width="87%"><%=rs("xm")%></td>
</tr>
<tr>
<td height="25" align="center">性别:</td>
<td><%=rs("xb")%></td>
</tr>
<tr>
<td height="25" align="center">年龄:</td>
<td><%=rs("nl")%></td>
</tr>
<%

a=a+1
rs.movenext
loop
%>
</table>
共有<%=a%>条记录.
<%

rs.close
set rs=nothing
conn.close
set conn=nothing
end if
end if
%>
<p>x1=<%=x1%> </p>
<p>x2=<%=x2%> </p>
<p>x3=<%=x3%> </p>
<p>sql=<%=sql%> </p>
<p><a href="index.asp">返回</p>
</body>
</html>


2007-07-21 11:51
快速回复:[求助]查询问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017352 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved