Excel实例下载
  VBA  应用教程
    数据库SQL知识
设为首页
CREATE TABLE - 创建数据表的语句
作者:bengdeng | 来源:Excel吧 | 时间:2008-09-23 | 阅读权限:游客 | 会员币:0 | 【

数据表是数据库的基本架构,就像Excel文件中的工作表一样,在Excel中我们可以用ADD方法来创建新的工作表,而SQL语言里,CREATE TABLE语句就是用来创建数据表的。关于ADD方法,大家可以参见一下:http://www.excelba.com/Art/Html/292.html

在说明CREATE TABLE语句的语法之前,我们再来了解一些相关的知识。Excel工作表中对应有列与行,而在数据库中,对应称为Column与Row,对于这两个单词,应该用过VBA的人都不会陌生,这也是Excel中VBA里列与行的写法。不同的是下面,在数据库中多少列是在创建表时就有设定的,虽然以后还有可能增加,而且在设定时还要规定整列的数据类型,同时也意味者整列的数据类型都是一样的;这个在Excel中是没有这样的规则,而且Excel的最大行与列是由Excel本身决定的,这也是数据库与电子表格对数据约束最大的不同。

而数据库具体有哪些数据类型呢?以ACCESS为例,有存贮日期类型的DATETIME;有存贮数值类型的FLOAT,SMALLINT,INTEGER等,有字符串型的CHAR等等。不同的数据库可能支持不同的数据类型,因此在使用时应该参考一下数据库在这方面的说明。

了解了上面的信息,下面开始说下CREATE TABLE语句的语法:

CREATE TABLE 表格名(列名1 列名1的数据类型,列名2 列名2的数据类型,... )

注意在列名与数据类型中间有一个空格,在VBA中,我们可以利用ADO的Execute方法,来运行SQL语句,下面我们就用CREATE TABLE 来创建一个进销存表数据库的三个数据表——明细表,进仓表与出仓表;其中明细表有5列,分别为物品名称(字符串型),结余日期(日期型),结余数量(双精度型),进仓数量(双精度型),出仓数量(双精度型);进仓表有3列,分别为进仓日期(日期型),物品名称(字符串型),进仓数量(双精度型);出仓表有3列,分别为出仓日期(日期型),物品名称(字符串型),出仓数量(双精度型)。代码如下:

Sub 创建进销存表数据库()
'*******************************************
'时间:2008-9-23
'作者:bengdeng
'功能:在程序文件同一目录创建进销表一个进销存表数据库
'注意:要在工具/引用中引用microsoft activex date objects x.x
'      其中x.x为版本号,可能会因为你安装的office的版本不同而不同,本例引用了2.5版
'      由于要创建一个新的数据库,还要引用microsoft ado ext.2.x for ddl and security
'      利用ADOX的Create方法来创建,其中2.X为版本号,本例引用了2.8版
'发布:http://www.excelba.com
'*******************************************
Dim MyCat As ADOX.Catalog
Dim conn As ADODB.Connection
Dim WN As String
Dim sSql As String
WN = "进销存表.mdb"

Set MyCat = New ADOX.Catalog
MyCat.Create "Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & ThisWorkbook.Path & "\" & WN
Set conn = New ADODB.Connection
conn.ConnectionString = MyCat.ActiveConnection
conn.Open
If conn.State = adStateOpen Then
    sSql = "CREATE TABLE 明细表 ( 物品名称 Text(255)," & _
           " 结余日期 Date, 结余数量 Float," & _
           " 进仓数量 Float, 出仓数量 Float)"
    conn.Execute sSql
    sSql = "CREATE TABLE 进仓表 ( 进仓日期 Date, 物品名称 Text(255), 进仓数量 Float)"
    conn.Execute sSql
    sSql = "CREATE TABLE 出仓表 ( 出仓日期 Date, 物品名称 Text(255), 出仓数量 Float)"
    conn.Execute sSql
    MsgBox "创建数据库成功!" & vbCrLf & "数据库文件名为:" & WN & vbCrLf & _
           "保存位置:" & ThisWorkbook.Path, , "http://excelba.com"
    conn.Close
End If
Set conn = Nothing
End Sub

因为要创表一个新的数据库,所以使用ADOX的Create 方法创建一个新的数据库。

下面再给出一段创建类似于上面内容的Excel文件。

Sub 创建进销存表文件()
'*******************************************
'时间:2008-9-23
'作者: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 sSql As String
WN = "进销存表.xls"

Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.Oledb.4.0;" & _
          "Extended Properties=Excel 8.0;" & _
          "Data Source=" & ThisWorkbook.Path & "\" & WN
If conn.State = adStateOpen Then
    sSql = "CREATE TABLE 明细表 ( 物品名称 Text(255)," & _
           " 结余日期 Date, 结余数量 Float," & _
           " 进仓数量 Float, 出仓数量 Float)"
    conn.Execute sSql
    sSql = "CREATE TABLE 进仓表 ( 进仓日期 Date, 物品名称 Text(255), 进仓数量 Float)"
    conn.Execute sSql
    sSql = "CREATE TABLE 出仓表 ( 出仓日期 Date, 物品名称 Text(255), 出仓数量 Float)"
    conn.Execute sSql
    MsgBox "创建文件成功!" & vbCrLf & "数据库文件名为:" & WN & vbCrLf & _
           "保存位置:" & ThisWorkbook.Path, , "http://excelba.com"
    conn.Close
End If
Set conn = Nothing
End Sub

有意思的是,创建Excel文件,不需要理会这个文件是否存在,如果存在就会在旧的文件中增加工作表,而不存在则会自动创建,不需要像ACCESS还用利用Create 方法。

CREATE TABLE 就介绍说明到这,现在大家动手复制一下上面的两段代码,运行一下,再对比一下,最后再理解一下,相信很快就会明白的哦*~_~*。

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

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