ASP的多條件動態查詢

來源:互聯網
上載者:User
動態|條件 當用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程式碼如下:
〈!--form的方法設定為post,表單提交後由people_seek.asp程式進行處理--〉
〈form method=“post” action=“people_seek.asp”〉
〈pre〉
〈font size=“2”〉姓名:〈/font〉
〈input type=“text” name=“txt_name” size=“10”〉
〈font size=“2”〉學曆:
〈select name=“sel_xueli”〉
〈option value=“選擇”〉選擇〈/option〉
〈option value=“中專”〉中專〈/option〉
〈option value=“大專”〉大專〈/option〉
〈option value=“本科”〉本科〈/option〉
〈option value=“碩士”〉碩士〈/option〉
〈option value=“博士”〉博士〈/option〉
〈option value=“博士後”〉博士後〈/option〉
〈/select〉
職稱:
〈select name=“sel_zhicheng”〉
〈option value=“選擇”〉選擇〈/option〉
〈option value=“助工”〉助工〈/option〉
〈option value=“工程師”〉工程師〈/option〉
〈option value=“進階工程師”〉進階工程師〈/option〉
〈/select〉
現在狀況:
〈select name=“sel_zhuangkuang”〉
〈option value=“選擇”〉選擇〈/option〉
〈option value=“在位”〉在位〈/option〉
〈option value=“休假”〉休假〈/option〉
〈option value=“出差”〉出差〈/option〉
〈/select〉
〈input type=“submit” name=“btn_seek” value=“搜尋”〉
〈input type=“reset” name=“btn_cancel” value=“取消”〉
〈input type=“submit” name=“btn_browse” value=“瀏覽”〉
〈/font〉 〈/pre〉
〈/form〉
多條件動態查詢的實現
people_seek.asp程式碼如下:
〈!--定義以下兩個函數,通過ADO串連SQL Server資料庫--〉
〈%
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
%〉
〈HTML〉〈BODY bgcolor=“#FFFFFF”〉
以下是對form表單的處理:
〈!--如果在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 %〉
〈center〉〈h2〉〈font color=“#FF0033”〉
〈%Response.Write “您沒有輸入查詢條件!” %〉〈BR〉〈BR〉
〈%Response.Write “請輸入條件後查詢!!!” %〉〈BR〉〈BR〉
〈/font〉〈/h2〉
〈input type=“button” name=“btn_goback”value=“返回” onclick=“javascript:history.go(-1)”〉
〈/center〉
〈%Response.End%〉
〈% end if
〈!--定義要查詢的SQL語句--〉
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 〈!--如果在form中點擊“瀏覽”按鈕--〉
sql_text=“select * from operator order by time desc”
end if
Myself = Request.ServerVariables(“PATH_INFO”)
〈!--串連SQL Serve資料庫,機器名為“comm_server”,資料庫名稱為“comm_server ”,以“sa”的身份訪問,密碼為空白--〉
Set rs = GetSQLServerStaticRecordset( GetSQLServerConnection(“comm_server”,“



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。