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”