圖28.1
在上一課裡,我們已經學會使用基本的SQL關鍵字SELECT(選擇)及FROM來操作在Visual Basic 6環境中的數據庫。在本課中,您將學習如何使用更多SQL關鍵字。其中一個重要的SQL關鍵字之一是WHERE。這個關鍵字允許用戶搜索符合一定條件的數據。語法如下:
SELECT 字段 1,字段 2,.....,字段 n FROM 表名 WHERE 條件
條件可用運算符=, >,<, <=, >=, <> 及Like 來設定
我們用在上一課裡創建的數據庫books.mdb來示范關鍵字SELECT及FROM更高級的用法。首先,啟動一個新的項目,然后插入一個DataGrid控件和一個ADO控件到表。在ADODC屬性頁對話框中,單擊Recordsource選項卡上,在指令類型選擇?1-adCmdText,並在指令Text(SQL)鍵入SELECT* FROM 書庫表。接下來,插入一個文本框,並把它放在DataGrid控件的頂部,這將是用戶可以輸入SQL查詢文本的地方。最后要加入的控件是一個命令按鈕並把其標題改為搜尋。設計界面如下圖所示:
圖28.1
範例28.1:根據作者的查詢
我們可鍵入以下的SQL查詢語句來搜尋作者的名字:
SELECT 書名, 作者 FROM 書庫表 WHERE 作者='张小東'
當你點擊查詢按鈕后,DataGrid將顯示作者張小東的名字,如下圖所示:
圖28.2
範例28.2:根據年份的查詢
我們可鍵入以下的SQL查詢語句來搜尋書籍的出版年份:
SELECT * FROM 書庫表 WHERE 年份>2009
當你點擊查詢按鈕后, DataGrid 將顯示2009年以后出版的所有書籍。
圖28.3
您也可以嘗試下面的查詢:
您也可以通過模式匹配來搜索包含特定字符的數據。它涉及到使用LIKE運算符和%符號。例如,如果你想尋找一個以V 字母開頭的作者姓名,你可以使用下面的查詢語句
SELECT * FROM 書庫表 WHERE 書名 Like 'V%'
當你點擊查詢按鈕后, 以V字母開頭的書名的記錄會顯示出來,如下圖所示:
圖28.4
接下來,如果你要按照順序或者逆序來排名,你可用ORDER By , ASC (ascending) 及 DESC(Descending) SQL 關鍵字。語法如下:
SELECT 字段1,字段2,.....,字段n FROM 表名 WHERE 條件ORDER BY 字段 ASC
SELECT 字段1,字段2,.....,字段n FROM 表名 WHERE 條件 ORDER BY 字段 DESC
範例28.3:
下面的查詢語句將根據作者把記錄按順序排列。
SELECT 書名, 作者 FROM 書庫表 ORDER BY 作者 ASC
圖28.5
範例 28.4下面的查詢語句對記按價格降序排序。
SELECT 書名, 價錢 FROM 書庫表 ORDER BY 價錢 DESC
图28.6
以上的範例是為了示范SQL關鍵字的應用,但對不熟悉電腦編程語言的一般用戶會造成困擾。要解決上述問題,我們需要把搜尋程序改得更簡易,用戶只需要鍵入任何字眼即可搜尋要找的資料。這個改善的程式需要加入兩個單選按鈕並將其標簽改為書名和作者及一個命令按鈕並將其標簽改為搜尋。設計界面如圖28.7所示
圖28.7
搜尋程式碼需要用到語句If...Then...Elseif...Else..EndIf 及SQL 裡的關鍵字SELECT ...FROM....WHERE 。其程式碼如下:
Private Sub cmdSearch_Click()
Dim strAuthor, strTitle As String
strAuthor = txtSearch.Text
strTitle = txtSearch.Text
If optAuthor.Enabled = True Then
Adodc1.RecordSource = "SELECT 作者 FROM 書庫表 WHERE 作者='" & strAuthor & "'"
ElseIf optTitle.Enabled = True Then
Adodc1.RecordSource = "SELECT 書名 FROM 書庫表 WHERE 書名='" & strTitle & "'"
End If
Adodc1.Refresh
End Sub
以下是輸出界面:
圖28.8