ASP查询条件为空时,默认查询全部

不知道有没有高手在,问个简单的问题我有个查询系统,分别有年、月、部门三个查询条件年、月是手动输入的,部门是下拉列表,部门默认为全部,值为空我想问的是:怎么实现当只输入年或... 不知道有没有高手在,问个简单的问题
我有个查询系统,分别有年、月、部门三个查询条件
年、月是手动输入的,部门是下拉列表,部门默认为全部,值为空
我想问的是:怎么实现当只输入年或者月或者部门的时候,其它两项不输入(即为空)的时候只查询符合输入项的条件。但当三个条件都输入或者其中两个条件输入了的时候,三个条件是AND关系输出查询结果。
我不知道我说的够不够明白
另外不要说什么做一个判断语句之类的,那样每个条件都得判断了。
求高手解答,万谢
sql="select * from telephone left outer join rent on rent.电话号码=telephone.电话号码 where isnull (telephone.部门,'') like '"&bm&"' and isnull (rent.年,'') like '"&ni&"' and rent.总计> '"&zj&"' "
这是我现在的sql语句
可能跟问题有点不符,我想知道的就是如何实现这个功能,一通全通了就
展开
 我来答
handangaoyang
2011-10-17 · TA获得超过2242个赞
知道大有可为答主
回答量:2633
采纳率:88%
帮助的人:928万
展开全部
你这个查询的SQL需要稍做修改就可以实现了。
但是还是要判断的。
string GetCondition()
{
string condition=" where 1=1 ";
if(年.text!="")
condition+=" and 年='"+年.text+"'";
if(月.text!="")
condition+=" and 月='"+月.text+"'";
if(部门.text!=null)
condition+=" and 部门='"+部门.text+"'";
string sql="select * from 表名"+condition;
}
不判断是不可能的。起码我是做不到,但是用上面的判断方法使得查询变得灵活。有需要查询的条件,就在后面拼接字符串,没有,就不用拼接查询条件。
百度网友2ca1c0f24
2011-10-17 · TA获得超过2036个赞
知道大有可为答主
回答量:4364
采纳率:0%
帮助的人:3438万
展开全部
假如你的年、月、部门的表单名称分别是:NIAN、YUE、BUM,那么可以使用下面的语句:
<%
IF BUM<>"" AND NIAN<>"" AND YUE="" THEN
strSQL = "select * from 数据表 WHERE 部门='" & BUM & "' AND 年='" & NIAN & "'"
ELSEIF BUM<>"" AND NIAN="" AND YUE<>"" THEN
strSQL = "select * from 数据表 WHERE 部门='" & BUM & "' AND 月='" & YUE & "'"
ELSEIF BUM="" AND NIAN<>"" AND YUE<>"" THEN
strSQL = "select * from 数据表 WHERE 年='" & NIAN & "' AND 月='" & YUE & "'"
ELSEIF BUM<>"" AND NIAN<>"" AND YUE<>"" THEN
strSQL = "select * from 数据表 WHERE 部门='" & BUM & "' AND 年='" & NIAN & "' AND 月='" & YUE & "'"
END IF
%>
或者:
<%
strSQL = "select * from 数据表 WHERE 部门='" & BUM & "'" '先决条件是部门不能为空
IF BUM<>"" AND NIAN<>"" THEN strSQL = strSQL & " AND 年='" & NIAN & "'"
IF BUM<>"" AND YUE<>"" THEN strSQL = strSQL & " AND 月='" & YUE & "'"

%>
追问
方便把你QQ告诉我么 我觉得你这虽然也有点报错 可我还能看得懂原理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
senvenliu
2011-10-17 · 超过44用户采纳过TA的回答
知道答主
回答量:107
采纳率:0%
帮助的人:149万
展开全部
sql="select * from telephone left outer join rent on rent.电话号码=telephone.电话号码 where 1=1"
if bm<>"" then sql=sql & " and telephone.部门 like '%"&bm&"%'"
if ni<>"" then sql=sql & " and rent.年 like '%"&ni&"%'"
..........
rs.open sql,conn,1,1
追问
谢谢、我按你的写、都可以成功、唯独其中有个条件是 rent.总计>'%"&zj&"%'"
打上这个条件后 就显示
ODBC 驱动程序不支持所需的属性
sql="select * from telephone left outer join rent on rent.电话号码=telephone.电话号码 where 1=1"
if zj"" then sql=sql & " and rent.总计>%"&zj&"%"
set r=server.CreateObject("adodb.recordset")
r.open sql,conn,1,1
if r.eof or r.bof Then
后面的代码就没什么用了
追答
if zj"" then sql=sql & " and rent.总计>"&zj&""
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式