Excel实例下载
  VBA  应用教程
    数据库SQL知识
设为首页
*(星号) - 数据表中所有的列
作者:bengdeng | 来源:Excel吧 | 时间:2008-10-19 | 阅读权限:游客 | 会员币:0 | 【

通过前面几篇 SQL语言教程 的文章,我们已了解了四个Select的子句,在了解下一个子句Into之前,我们先来了解一下 *(星号)在SQL的作用。

*(星号),在程序一般代表所有的东西,在SQL里也不例外,它的作用就是代表数据表中所有的列。在我们检索某些特定的数据时,我们不需要知道列的信息,*(星号)就能起到它的作用了。*(星号)主要用到两个方面:

1、列出指定数据表中的所有列的数据。其语法是:

SELECT * FROM 表格名

2、在Count中,获得数据的行数。其语法是:

SELECT COUNT(*) FROM 表格名

第二种应用的情况是很常用到的,而第一种应用,不应该在任何时候都使用Select *,因为当数据的列变动后,Select *的结果也会变动,可能有不可预见的情况出现,所以一般情况下,还是列出列名清单。

下面就举一个例子,来让我们理解一下Select *的用途。这段程序是在一个新的工作表中列出明细表里的所有数据,像这样的情况,用Select *是最理想的了。

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

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

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 * From " & TableName
    Set rst = New ADODB.Recordset
    rst.Open sSql, conn, 1, 3
    For ii = 0 To rst.Fields.Count - 1
        sRan.Offset(0, ii).Value = rst.Fields(ii).Name
        If rst.Fields(ii).Name = "出仓日期" Then
            sRan.Offset(0, ii).EntireColumn.NumberFormatLocal = "yyyy-m-d"
        End If
    Next
   
    sRan.Offset(1, 0).CopyFromRecordset rst
   
    MsgBox "成功列出“" & TableName & "”中的所有记录!", , "http://excelba.com"
    conn.Close
End If
Set conn = Nothing
End Sub

对于上面的代码,大家可以自己动手改成对Excel文件操作的例子,下面对Excel文件操作的例子,我们来举一个应用Count(*)的实例。这段程序的功能是获得明细表中所有数据的行数,代码如下:

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

WN = "进销存表.xls"
TableName = "明细表"

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 Count(*) From [" & TableName & "$] "
    MsgBox "“" & TableName & "”中总计有“" & conn.Execute(sSql)(0) & "”条的记录!", , "http://excelba.com"
    conn.Close
End If
Set conn = Nothing
End Sub

*在SQL中的应用就介绍完了,在之后介绍Into子句时,我们还会用到它,现在你可以动一下手,复制上面的代码,然后运行看一下效果,学习一下吧!

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