第28课:以SQL关键词建立搜寻功能

[上一课][返回主页][下一课]

在上一课中,我们已经学会使用基本的 SQL 关键词 SELECT(选择)及  FROM来操作在Visual Basic 6环境中的数据库。在本课中,您将学习如何使用更多SQL关键词。 其中一个重要的SQL关键词之一是 WHERE。 这个关键字允许用户搜索符合一定条件的数据。语法如下:

SELECT 字段1,字段2,.....,字段n  FROM  表名 WHERE  条件

条件可用运算符=, >,<, <=, >=, <>Like 来设定

我们用在上一课中创建的数据库books.mdb来示范关键词 SELECT 及 FROM 更复杂的用法。首先,启动一个新的项目,然后插入一个DataGrid控件和一个ADO控件到表。在ADODC属性页对话框中,单击Recordsource选项卡上,在指令类型(Command Type)选择1-adCmdText,并在Command Text(SQL)键入SELECT* FROM 书库表。 接下来,插入一个文本框,并把它放在DataGrid控件的顶部,这将是用户可以输入SQL查询文本的地方。最后要加入的控件是一个命令按钮并把其标题改为搜寻。设计界面如图28.1所示:

图28.1

范例28.1:根据作者的查询

我们可键入以下的SQL查询语句来搜寻作者的名字:

SELECT 书名, 作者 FROM 书库表 WHERE 作者='张小东'

当你点击查询按钮后,DataGrid将显示作者张小东的名字,如图28.1所示:

图28.2

 

范例28.2:根据年份的查询

我们可键入以下的SQL查询语句来搜寻书籍的出版年份:

SELECT * FROM  书库表 WHERE 年份>2009

当你点击查询按钮后,  DataGrid 将显示2009年以后出版的所有书籍,如图28.2 所示。

图28.2

您也可以尝试下面的查询:

您也可以通过模式匹配来搜索包含特定字符的数据。它涉及到使用LIKE运算符和%符号。例如,如果你想寻找一个以V 字母开头的作者姓名,你可以使用下面的查询语句

SELECT * FROM 书库表 WHERE 书名 Like 'V%'

当你点击查询按钮后, 以V字母开头的书名的记录会显示出来,如图28.3所示:

图28.3

 

接下来,如果你要按照顺序或者逆序来排名,你可用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.4

范例 28.4

下面的查询语句按价格降序排列。

SELECT 书名, 价钱 FROM 书库表 ORDER BY 价钱  DESC

图28.5

以上的范例是为了示范SQL关键字的应用,但对不熟悉电脑编程语言的一般用户会造成困扰。要解决上述问题,我们需要把搜寻程序改得更简易,用户只需要键入任何字眼即可搜寻要找的资料。这个改善的程序需要加入两个单选按钮并将其标签改为书名作者及一个命令按钮并将其标签改为搜寻。设计界面如图28.6所示

图28.6

搜寻程序代码需要用到语句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

[上一课][返回主页][下一课]

版权所有©2008 Dr.Liew Voon Kiong。保留所有权利|联系我们: vbtutor.net

[Privacy Policy]