Excel实例下载
  VBA  应用教程
    数据库SQL知识
设为首页
Where - 筛选与限制检索的数据
作者:bengdeng | 来源:Excel吧 | 时间:2008-10-14 | 阅读权限:游客 | 会员币:0 | 【

http://www.excelba.com/Art/Html/303.html中我们已介绍是完整的Select的语法,并给出最简单的Select的应用例子,这一篇我们要来说明Select的第一个子句——Where。

Where的功能就是根据后面的条件,限制与筛选Selet检索的数据,而条件中又可以分为几种:

1、运算符。通过比较运算符 —— >(大于) , <(小于) ,=(等于) ,>=(大于等于) ,<=(小于等于) ,<>(不等于)来设定条件,例如:

Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称='铅笔'

在进仓表检索出物品名称为铅笔的数据。

2、Or 与 And。通Or与And边接多个条件,例如:

Select 进仓日期,物品名称,进仓数量 From 进仓表 Where 物品名称='铅笔' And 日期=#2008-10-2#

在进仓表检索出2008年10月2日里物品名称为铅笔的数据。

3、Between…And。在指定的范围之内检索数据,例如:

Select 进仓日期,物品名称,进仓数量 From 进仓表 Where  进仓数量 Between 3 and 6

在进仓表检索出进仓数据在3与6之间的数据。

4、In。通过In 列出所有可能的值,例如:

Select 进仓日期,物品名称,进仓数量 From 进仓表 Where  物品名称 in ('铅笔','毛笔','钢笔')

在进仓表检索出物品名称为铅笔、毛笔和钢笔的数据。

5、Like。通过Like与通配符,列出符合的条件。通配符有%,_,[]三种,不同的数据库可能支持不一样,在Excel+ADO+ACCESS的环境下,三种都支持,例如:

Select 进仓日期,物品名称,进仓数量 From 进仓表 Where  物品名称 Like '铅%'

在进仓表检索出物品名称以铅为开头的数据。

Select 进仓日期,物品名称,进仓数量 From 进仓表 Where  物品名称 Like '_笔%'

在进仓表检索出物品名称以任一一个字符+笔为开头的数据。实例中包含钢笔、铅笔等,不包含圆珠笔、水彩笔等。

Select 进仓日期,物品名称,进仓数量 From 进仓表 Where  物品名称 Like '[钢,圆珠,毛]%'

在进仓表检索出物品名称以钢,圆珠,毛为开头的数据。

到此Where条件的说明就介绍完成,大家可以看出,特别是善用最后的like,可以更灵活地筛选出我们需要的数据。下面就以最后一个条件为内容,给出一个完整的程序,其它条件,大家只要代替Where后面的部分就可以了,代码如下:

Sub 进销存表数据库中按条件读取明细表的数据()
'*******************************************
'时间:2008-10-14
'作者:bengdeng
'功能:在程序文件同一目录下进销存表数据库中按条件读取明细表的数据
'注意:要在工具/引用中引用microsoft activex date objects x.x
'      其中x.x为版本号,可能会因为你安装的office的版本不同而不同,本例引用了2.5版
'发布:http://www.excelba.com
'*******************************************
Dim conn As ADODB.Connection
Dim WN As String
Dim TableName As String
Dim sSql As String
Dim xSh As Worksheet
Dim sRan As Range
Dim ColNum As Integer
Dim ii As Integer

WN = "进销存表.mdb"
TableName = "进仓表"
'需要写入的工作表名称
Set xSh = ThisWorkbook.Worksheets("进仓表")
'标题开始单元格
Set sRan = xSh.Range("A1")
'标题列数
ColNum = 3

Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _
                        "Data Source=" & ThisWorkbook.Path & "\" & WN
conn.Open
If conn.State = adStateOpen Then
    sSql = "Select "
    For ii = 1 To ColNum
        sSql = sSql & sRan.Offset(0, ii - 1).Value & ","
    Next
    sSql = Left(sSql, Len(sSql) - 1) & " From " & TableName & " Where 物品名称 Like '[钢,铅,毛]%'"
   
    sRan.Offset(1, 0).CopyFromRecordset conn.Execute(sSql)
   
    MsgBox "成功读取“" & TableName & "”中的记录!", , "http://excelba.com"
    conn.Close
End If
Set conn = Nothing
End Sub

同样,我们也是给如一段操作Excel的程序:

Sub 进销存表文件中按条件读取明细表的数据()
'*******************************************
'时间:2008-10-14
'作者:bengdeng
'功能:在程序文件同一目录下进销存表数据文件中按条件读取明细表的数据
'注意:要在工具/引用中引用microsoft activex date objects x.x
'      其中x.x为版本号,可能会因为你安装的office的版本不同而不同,本例引用了2.5版
'发布:http://www.excelba.com
'*******************************************
Dim conn As ADODB.Connection
Dim WN As String
Dim TableName As String
Dim sSql As String
Dim xSh As Worksheet
Dim sRan As Range
Dim ColNum As Integer
Dim ii As Integer

WN = "进销存表.xls"
TableName = "进仓表"
'需要写入的工作表名称
Set xSh = ThisWorkbook.Worksheets("进仓表")
'标题开始单元格
Set sRan = xSh.Range("A1")
'标题列数
ColNum = 3

Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _
                        "Extended Properties=Excel 8.0;" & _
                        "Data Source=" & ThisWorkbook.Path & "\" & WN
conn.Open
If conn.State = adStateOpen Then
    sSql = "Select "
    For ii = 1 To ColNum
        sSql = sSql & sRan.Offset(0, ii - 1).Value & ","
    Next
    sSql = Left(sSql, Len(sSql) - 1) & " From [" & TableName & "$] Where [物品名称] Like '[钢,铅,毛]%'"
   
    sRan.Offset(1, 0).CopyFromRecordset conn.Execute(sSql)
   
    MsgBox "成功读取“" & TableName & "”中的记录!", , "http://excelba.com"
    conn.Close
End If
Set conn = Nothing
End Sub

如果你不是从第一篇 SQL语言教程 看起,你需要到http://www.excelba.com/Soft/Html/119.html 下载文件,压缩文件包含三个文件,数据库文件——进销存表.mdb与Excel文件——进销存表.xls就是保存数据的文件,而主文件.xls就是主程序文件,以后大家的代码可以添加在这个文件的新模块里,然后再运行程序代码。

下载好了之后,大家就可以复制上面的代码,动手运行与体会一下吧*^_^*。

文章录入:admin | 浏览次数:
相关评论(以下网友评论只代表其个人观点,不代表Excel吧的观点或立场)
相关信息

关于本站 | 留言本站 | 友情连接 | 后台管理
Copyright © 2005 - 2008 Excel吧 Inc. All Rights Reserved.
HxCms Ver9.0  闽ICP备06001689号
关闭此窗口