CREATE TABLE - 創(chuàng)建數(shù)據(jù)表的語句作者:bengdeng | 來源:Excel吧 | 時間:2008-09-23 | 閱讀權(quán)限:游客 | 會員幣:0 | 【大 中 小】
數(shù)據(jù)表是數(shù)據(jù)庫的基本架構(gòu),就像Excel文件中的工作表一樣,在Excel中我們可以用ADD方法來創(chuàng)建新的工作表,而SQL語言里,CREATE TABLE語句就是用來創(chuàng)建數(shù)據(jù)表的。關(guān)于ADD方法,大家可以參見一下:
http://www.excelba.com/Art/Html/292.html在說明CREATE TABLE語句的語法之前,我們再來了解一些相關(guān)的知識。Excel工作表中對應(yīng)有列與行,而在數(shù)據(jù)庫中,對應(yīng)稱為Column與Row,對于這兩個單詞,應(yīng)該用過VBA的人都不會陌生,這也是Excel中VBA里列與行的寫法。不同的是下面,在數(shù)據(jù)庫中多少列是在創(chuàng)建表時就有設(shè)定的,雖然以后還有可能增加,而且在設(shè)定時還要規(guī)定整列的數(shù)據(jù)類型,同時也意味者整列的數(shù)據(jù)類型都是一樣的;這個在Excel中是沒有這樣的規(guī)則,而且Excel的最大行與列是由Excel本身決定的,這也是數(shù)據(jù)庫與電子表格對數(shù)據(jù)約束最大的不同。
而數(shù)據(jù)庫具體有哪些數(shù)據(jù)類型呢?以ACCESS為例,有存貯日期類型的DATETIME;有存貯數(shù)值類型的FLOAT,SMALLINT,INTEGER等,有字符串型的CHAR等等。不同的數(shù)據(jù)庫可能支持不同的數(shù)據(jù)類型,因此在使用時應(yīng)該參考一下數(shù)據(jù)庫在這方面的說明。
了解了上面的信息,下面開始說下CREATE TABLE語句的語法:
CREATE TABLE 表格名(列名1 列名1的數(shù)據(jù)類型,列名2 列名2的數(shù)據(jù)類型,... )
注意在列名與數(shù)據(jù)類型中間有一個空格,在VBA中,我們可以利用ADO的Execute方法,來運行SQL語句,下面我們就用CREATE TABLE 來創(chuàng)建一個進銷存表數(shù)據(jù)庫的三個數(shù)據(jù)表——明細表,進倉表與出倉表;其中明細表有5列,分別為物品名稱(字符串型),結(jié)余日期(日期型),結(jié)余數(shù)量(雙精度型),進倉數(shù)量(雙精度型),出倉數(shù)量(雙精度型);進倉表有3列,分別為進倉日期(日期型),物品名稱(字符串型),進倉數(shù)量(雙精度型);出倉表有3列,分別為出倉日期(日期型),物品名稱(字符串型),出倉數(shù)量(雙精度型)。代碼如下:
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)," & _
" 結(jié)余日期 Date, 結(jié)余數(shù)量 Float," & _
" 進倉數(shù)量 Float, 出倉數(shù)量 Float)"
conn.Execute sSql
sSql = "CREATE TABLE 進倉表 ( 進倉日期 Date, 物品名稱 Text(255), 進倉數(shù)量 Float)"
conn.Execute sSql
sSql = "CREATE TABLE 出倉表 ( 出倉日期 Date, 物品名稱 Text(255), 出倉數(shù)量 Float)"
conn.Execute sSql
MsgBox "創(chuàng)建數(shù)據(jù)庫成功!" & vbCrLf & "數(shù)據(jù)庫文件名為:" & WN & vbCrLf & _
"保存位置:" & ThisWorkbook.Path, , "
conn.Close
End If
Set conn = Nothing
End Sub因為要創(chuàng)表一個新的數(shù)據(jù)庫,所以使用ADOX的Create 方法創(chuàng)建一個新的數(shù)據(jù)庫。
下面再給出一段創(chuàng)建類似于上面內(nèi)容的Excel文件。
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)," & _
" 結(jié)余日期 Date, 結(jié)余數(shù)量 Float," & _
" 進倉數(shù)量 Float, 出倉數(shù)量 Float)"
conn.Execute sSql
sSql = "CREATE TABLE 進倉表 ( 進倉日期 Date, 物品名稱 Text(255), 進倉數(shù)量 Float)"
conn.Execute sSql
sSql = "CREATE TABLE 出倉表 ( 出倉日期 Date, 物品名稱 Text(255), 出倉數(shù)量 Float)"
conn.Execute sSql
MsgBox "創(chuàng)建文件成功!" & vbCrLf & "數(shù)據(jù)庫文件名為:" & WN & vbCrLf & _
"保存位置:" & ThisWorkbook.Path, , "
conn.Close
End If
Set conn = Nothing
End Sub有意思的是,創(chuàng)建Excel文件,不需要理會這個文件是否存在,如果存在就會在舊的文件中增加工作表,而不存在則會自動創(chuàng)建,不需要像ACCESS還用利用Create 方法。
CREATE TABLE 就介紹說明到這,現(xiàn)在大家動手復(fù)制一下上面的兩段代碼,運行一下,再對比一下,最后再理解一下,相信很快就會明白的哦*~_~*。