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

在前面的几篇 SQL语言教程 里,介绍了Select的三个子句,这一篇要介绍的是第四个子句子句Order By。

如果说Where对应的Excel的功能是筛选,Group By对应的Excel功能是分类汇总的话,那么Order By对应的就是Excel的排序功能了。有时候我们检索的数据,在列出的时候需要按某些列的数据排列出来,这时就要用到Order By子句,其语法是:

SELECT 列名1,列名2…… FROM 表格名 ORDER BY 排序列名 [ASC|DESC]

语句最后的Acs与Desc分别代表升序与降序,如果没有指定的话,将默认为升序(Acs),同样排序列名可以是多列,与检索的列名一样,用“,”分开。

下面,还是举个例子来帮助我们理解上面的内容。这段代码的功能是列出进仓表中按物品名称升序且按日期降序排列后的数据:

Sub 列出排序后进销存表数据库中进仓表的数据()
'*******************************************
'时间:2008-10-18
'作者: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 & " Order By 物品名称 Asc,进仓日期 Desc"
   
    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-18
'作者: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 & "$] Order By 物品名称 Asc,进仓日期 Desc"
   
    sRan.Offset(1, 0).CopyFromRecordset conn.Execute(sSql)
   
    MsgBox "成功读取“" & TableName & "”中的记录!", , "http://excelba.com"
    conn.Close
End If
Set conn = Nothing
End Sub

到此Order By就介绍完了,现在动一下手,复制上面的代码,然后运行看一下效果,学习一下吧!

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