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

通过前面几篇 SQL语言教程 的介绍,我们已可以创建,修改,删除数据库表与数据库里的数据,今天我们要接触的是SQL语言中,最根本,最常用,但也最难全懂的——Select语句。在说明Select的语法时,我一直想把它的语法还是像以前说明的那样,写成中文的形式,不过最后还是决定,先把原来的英文语法写在这里吧:

SELECT select_list
[ INTO new_table ] 
FROM table_source 
[ WHERE search_condition ] 
[ GROUP BY group_by_expression ] 
[ HAVING search_condition ] 
[ ORDER BY order_expression [ ASC | DESC ] ]

如果要改为之前我的那种说明方式,可以理解为:

Select 列名1,列名2,……
[Into 新表格名]
From 表格名
[Where {条件}]
[Group By 组合列名1,组合列名2,……]
[Having {组合条件}]
[Order By 排序列名1,排序列名2,…… [Asc|Desc]]

其中[]是非必需要的,而今天我们第一步先来给出一个最最简单的应用例子,这个例子不包含所有的[]的项目,其功能是在Excel表格中,列出数据库里明细表的所有内容。其中要用到的CopyFromRecordset,大家可以参考一下VBA帮助或本站的文章:http://www.excelba.com/Art/Html/302.html

为了方便大家以后运行代码,今天在http://www.excelba.com/Soft/Html/119.html 上传了一个示例文件,其中包含三个文件,数据库文件——进销存表.mdb与Excel文件——进销存表.xls就是保存数据的文件,而主文件.xls就是主程序文件,以后大家的代码可以添加在这个文件的新模块里,然后再运行程序代码。

Sub 进销存表数据库中读取明细表的数据()
'*******************************************
'时间:2008-10-13
'作者: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 = 5

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
   
    sRan.Offset(1, 0).CopyFromRecordset conn.Execute(sSql)
   
    MsgBox "成功读取“" & TableName & "”中的记录!", , "http://excelba.com"
    conn.Close
End If
Set conn = Nothing
End Sub

同样,我们也给一段读取进销存表.xls中明细表里数据的程序,代码如下:

Sub 进销存表文件中读取明细表的数据()
'*******************************************
'时间:2008-10-13
'作者: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 = 5

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 & "$]"
   
    sRan.Offset(1, 0).CopyFromRecordset conn.Execute(sSql)
   
    MsgBox "成功读取“" & TableName & "”中的记录!", , "http://excelba.com"
    conn.Close
End If
Set conn = Nothing
End Sub

通过两个程序,我们已可以初步了解Select,接下来的几篇文章,我们将一个个介绍[]中的每一个参数,而现在你要做的,就是复制上面的程序,动手学习一下吧*^_^*。SQL与Excel的世界已开始越来越精彩,一起继续前进吧!

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

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