我們接上一部分繼續講解如何利用Command對象來執行SQL命令,實現“留言記錄日期查詢”和“留言簿過去五天留言記錄查詢”。但在應用Command對象來執行SQL命令之前我們必須在留言數據庫中先建立查詢,假如我們要查詢的是“留言簿過去五天留言記錄”,那麼在留言數據庫中建立查詢的具體方法如下所示。(對於數據庫,在Access中可以建立五種不同類型的查詢,因為我們要查詢兩個日期之間的留言記錄,因此我在這裡只以“使用‘設計’視圖建立參數查詢”為例,當然你也可以“使用向導建立查詢”。使用“設計”視圖建立查詢要比使用向導靈活得多,例如,在“設計”視圖中,既可以建立像“選擇查詢”之類的簡單查詢,又可以建立像“參數查詢”和“操作查詢”之類的復雜查詢,而且在“查詢設計網格”中既能夠增加、移動、插入和刪除字段,也能夠設置准則和排序次序,計算總和和平均值,等等)
在Access中,使用‘設計’視圖建立參數查詢:
一、打開留言數據庫,在“數據庫”窗口中單擊“查詢”選項卡,然後單擊“新建”按鈕 。
二、在“新建查詢”對話框中,單擊“設計視圖”,然後單擊“確定”按鈕。
三、在“顯示表”對話框中,選擇“表”選項卡,然後單擊“添加按鈕或者雙擊“guestbook”表的名稱,將它添加到“查詢”窗口中,然後關閉“顯示表”的對話框。
四、在“guestbook”表的字段列表中,單擊“ID”字段的字段名,按住鼠標不放,將它拖到“查詢設計網格”的第一列。同樣,可以將“姓名”、“電話”、“EMAIL”、“主題”、“留言”和“時間”字段的字段名依次拖到“查詢設計網格”的其它各列中。
五、在作為參數使用的“時間”字段下的“准則”單元格中,鍵入下列表達式:
Between[請鍵入開始日期]And[請鍵入結束日期]。
六、單擊工具欄上的“保存”按鈕保存查詢,這時會彈出一個“另存為”的對話框,我們在“另存為”對話框中輸入該查詢表的名稱“留言記錄日期查詢”,然後單擊“確定”按鈕。
在留言數據庫中建立了查詢後,我們接下來將利用Command對象來執行日期查詢的SQL命令編寫如下(Date.ASP):
< !--#include file="adovbs.inc" -->
< !--#include file="Search.ASP" -->
< %
Head="留言簿查詢"
start=Request("start")
last=Request("last")
'讀取用戶輸入的數據,然後指定給start及last變量
If start="" Then start = #99-10-1#
If last="" Then last = #99-12-30#
'如果用戶沒有輸入查詢的開始時間和結束時間時,在“開始時間”和“結束時間”的查詢框中顯示這裡定義的缺省值 99-10-1和99-12-30
% >
< h2 Align="Center"> < %=Head%>< /h2>
< hr noshade color="red">
< %
Set conn = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("book2.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = conn
cmd.CommandText = "留言記錄日期查詢"
'將 Connection對象及SQL命令設置給Command對象的ActiveConnection屬性以及 CommandText屬性
ReDim param(1)
'聲明含有兩個元素的數組,因為該“留言日期查詢”必須有查詢的起始時間和結束時間,所以在這裡必須聲明一個含有兩個元素的數組
param(0) = CDate(start)
param(1) = CDate(last)
Set rs = cmd.Execute( ,param )
'將start及last變量指定給param數組,然後傳入cmd.Execute函數中,在這裡函數cmd.Execute含有兩個參數,其中第一個參數是用於希望返回的數據記錄數,這裡缺省表示希望返回所有的數據記錄;參數二“param”是SQL命令的參數。
Search rs
%>
< hr noshade color="red"> < div align="center">
< a href="Datesearch.ASP" class="text2">返回留言查詢< /a>
同理,利用Command對象來執行SQL命令,實現“留言簿過去五天留言記錄查詢”的原理與上述實現“留言記錄日期查詢”的原理是一樣的,我們可以編寫如下所示:
Set conn = Server.CreateObject("ADODB.Connection")
DBPath = Server.MapPath("book2.mdb")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = conn
cmd.CommandText = "留言簿過去五天留言記錄"
Set rs = cmd.Execute
Search rs
至此,兩種實現查詢的方法我們都已學習過了,大家能說出它們存在著什麼區別嗎?
打個比方,如果我們直接把某一個SQL命令寫在ASP程序中,要知道該命令是否正確無誤,我們必須啟動浏覽器浏覽這個程序才能夠測試出來,若SQL命令有錯,我們必須修改ASP程序,然後再重新浏覽直到正確為止;如果我們利用Command對象來執行SQL命令,則必須直到留言數據庫中建立的查詢完全正確才將SQL命令存儲成“查詢對象”,於是在ASP程序中我們只要將這個查詢對象的名稱指定給Command對象的CommandText參數,即可正確無誤地執行SQL命令。