Excel实例下载
  VBA  应用教程
    数据库SQL知识
设为首页
Top - 限制检索结果的数量
作者:bengdeng | 来源:Excel吧 | 时间:2008-11-08 | 阅读权限:游客 | 会员币:0 | 【

转眼一个月又过去了,忙完了手上的工作,继续在 SQL语言教程 中介绍余下的几个SQL语句关 键词。

在前面的 SQL语言教程 中我们已了解了Select,前面所讲的Select中,我们获得的检索数据是符合条件的所 有的数据,而有时候我们并不需要所有的,而只是需要列出最前面的几条数据时,这时我们就需要用到Top 。

Top的作用就是限制检索结果的数量,其使用方法是:

Select Top 数量 列名1,列名2,…… From 表格名 [Order By 排序列名1,排序列名2,…… [Asc|Desc]]

需要注意的是,Top限制的数量在一般情况下就是检索出来的数量,但如果正好其排序(Order By)的最 后一条数据中,出现并列的情况时,检索的数结果就会大于数量,因此,如果我们需要准确的结果时,排 序的条件就要是唯一的,以防止上面的情况发生。

下面同样给出一个例子,这个例子是检索出10月3日中,出仓数量最大的三条数据。

Sub 进销存表数据库中出仓表指定日期最大三条出仓记录()
'*******************************************
'时间:2008-11-8
'作者: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 tNum As Integer
Dim tDate As Date

WN = "进销存表.mdb"
TableName = "出仓表"
Set xSh = ThisWorkbook.Worksheets (TableName)
Set sRan = xSh.Range("A1")
tNum = 3
tDate = "2008-10-3"

Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _
              &nbs p;         "Data Source=" & ThisWorkbook.Path & "\" & WN
conn.Open
If conn.State = adStateOpen Then
    sSql = "Select Top " & tNum & " * From " & TableName & " Where 出仓日期=#" & tDate & "# Order By 出仓数量 Desc"
    sRan.Offset(1, 0).CopyFromRecordset conn.Execute(sSql)
    MsgBox "成功导入“" & TableName & "”中“" & tDate & "”的最大" & tNum & "条出仓记录!", , "http://excelba.com"
    conn.Close
End If
Set conn = Nothing
End Sub

而下面这个操作Excel的例子,功能和上面的差不多,不过数量改成前4条。

Sub 进销存表文件中出仓表指定日期最大三条出仓记录()
'*******************************************
'时间:2008-11-8
'作者: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 tNum As Integer
Dim tDate As Date

WN = "进销存表.xls"
TableName = "出仓表"
Set xSh = ThisWorkbook.Worksheets (TableName)
Set sRan = xSh.Range("A1")
tNum = 4
tDate = "2008-10-3"

Set conn = New ADODB.Connection
conn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _
              &nbs p;         "Extended Properties=Excel 8.0;" & _
              &nbs p;         "Data Source=" & ThisWorkbook.Path & "\" & WN
conn.Open
If conn.State = adStateOpen Then
    sSql = "Select Top " & tNum & " * From [" & TableName & "$] Where 出仓日期=#" & tDate & "# Order By 出仓数量 Desc"
    sRan.Offset(1, 0).CopyFromRecordset conn.Execute(sSql)
    MsgBox "成功导入“" & TableName & "”中“" & tDate & "”的最大" & tNum & "条出仓记录!", , "http://excelba.com"
    conn.Close
End If
Set conn = Nothing
End Sub

第二个例子的结果是5行!!可以看到,因为排序的数量,并不是唯一的,导致有可能出现并列的结果 !为了更好的理解上面的文字,现在可以动手复制上面的代码,运行一下看一下效果吧*^_^*。

如果你不是从第一篇 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号
关闭此窗口