英文VB教程 简体Visual Basic教程 繁体Visual Basic教程
≡

第二十八è¯�: 建立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。保留所有权åˆ� 。联系我ä»�: VB面子ä¹�

[Privacy Policy]