你这个查询的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;
}
不判断是不可能的。起码我是做不到,但是用上面的判断方法使得查询变得灵活。有需要查询的条件,就在后面拼接字符串,没有,就不用拼接查询条件。
假如你的年、月、部门的表单名称分别是: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 & "'"
%>
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