ASP的多条件动态查询
- 格式:doc
- 大小:38.50 KB
- 文档页数:5
ASP的多条件动态查询
2003:8:26 ·来源:Asp/Jsp技术网 karry
当用ASP与SQL Server数据库打交道时,查询语句是必不可少的。SQL
Server数据库本身提供了丰富的查询语句,但是如何在ASP中实现对SQL
Server数据库的多条件动态查询呢?笔者在用ASP开发一个基于SQL
Server的网站时,较好地解决了这一问题,本文介绍其中的实现方法。
数据库的定义
在SQL Server中定义一个数据库,名称为“comm_server”。在该数据库中定义一个表,表名为“operator”,包含如下表所示字段 (仅以程序中用到的5个字段为例):
字段名称 备注
Name 姓名Varchar(20),定义为主键
Educationallever 学历 Varchar(10)
Grade 职称 Varchar(10)
State 现在状况 Varchar(10)
Time 记录时间 datetime
输入网页的设计
在index_people.htm网页中定义一个form,其中用到的标准用户界面元素如下:
姓名:学历: 选择职称: 选择现在状况: 选择
TML程序代码如下:
姓名:
学历:
选择
中专
大专
本科
硕士
博士
博士后
职称:
选择
助工
工程师
高级工程师
现在状况:
选择
在位
休假
出差
多条件动态查询的实现
people_seek.asp程序代码如下:
<%
Function GetSQLServerConnection( Computer, UserID, Password, Db )
Dim Params, conn
Set GetSQLServerConnection = Nothing
Params = “Provider=SQLOLEDB.1”
Params = Params &“;Data Source=” & Computer
Params = Params & “;User ID=” & UserID
Params = Params & “;Password=” & Password
Params = Params & “;Initial Catalog=” & Db
Set conn = Server.CreateObject
(“ADODB.Connection”)
conn.Open Params
Set GetSQLServerConnection = conn
End Function
Function GetSQLServerStaticRecordset( conn, source )
Dim rs
Set rs = Server.CreateObject(“ADODB.Recordset”)
rs.Open source, conn, 3, 2
Set GetSQLServerStaticRecordset = rs
End Function %>
以下是对form表单的处理:
<%
if Request(“btn_seek”)<> Empty then
seek_name=Trim(Request(“txt_name”))
seek_xueli=Trim(Request(“sel_xueli”))
seek_zhicheng=Trim(Request(“sel_zhicheng”))
seek_zhuangkuang=Trim(Request
(“sel_zhuangkuang”))
if((seek_name=“”) and (seek_xueli=“选择”)
and (seek_zhicheng=“选择”) and
(seek_zhuangkuang=“选择”)) then %>
<%Response.Write “您没有输入查询条件!” %>
<%Response.Write “请输入条件后查询!!!” %>
<%Response.End%>
<% end if
sql_text=“select * from operator where ”
if seek_name=“” then
sql_text=sql_text
else
sql_name=“name =‘“&seek_name&”’”
sql_text=sql_text+sql_name
end if
if seek_xueli=“选择” then
sql_text=sql_text
else
if (seek_name<>“”) then
sql_xueli=“ and “+”educationallever =‘“&seek_xueli&”’”
else
sql_xueli=“educationallever =‘“&
seek_xueli&”’”
end if
sql_text=sql_text+sql_xueli
end if
if seek_zhicheng=“选择" then
sql_text=sql_text
else
if ((seek_name<>“”) or (seek_xueli<>“选择”)) then
sql_zhicheng=“ and “+”grade =‘“&seek_zhicheng&”’”
else
sql_zhicheng=“grade =‘“&
seek_zhicheng&”’”
end if
sql_text=sql_text+sql_zhicheng
end if
if seek_zhuangkuang=“选择” then
sql_text=sql_text
else
if ((seek_name<>“”) or (seek_xueli<>“选择”) or (seek_zhicheng<>“选择”))
then
sql_zhuangkuang=“ and “+”state =‘“&seek_zhuangkuang&”’”
else
sql_zhuangkuang=“state =‘“&
seek_zhuangkuang&”’”
end if
sql_text=sql_text+sql_zhuangkuang
end if
sql_text=sql_text+“ order by time desc”
else
sql_text=“select * from operator order by time desc”