人生在世,本來就是生不帶來,死不帶去,太多的執念,反而變成沉甸甸的包袱。真正活的聰慧的人,都懂得為心靈騰出位置,拋去一些過往雲煙,把清風明月請進胸懷,這樣的人往往大智若愚。人生何其短暫,重要的不是過紙醉金迷的生活,而是拋開浮雲,看到生命的真諦。
《VBA數據庫解決方案》教程是我推出第二套教程,目前已經是第一版修訂了。這套教程定位於中級,是學完字典後的另一個專題講解。數據庫是數據處理的利器,教程中詳細介紹了利用ADO連接ACCDB和EXCEL的方法和實例操作,教程第一版的修訂內容主要是完成所有程序文件的32位和64位OFFICE系統測試。
這套教程共兩冊,八十四講,今後一段時間會給大家陸續推出修訂後的教程內容。今日的內容是第14講:數據庫中動態刪除和建立數據表。

第十四講 如何在數據庫中動態刪除和建立數據表
大家好,今天繼續講解VBA數據庫解決方案的第14講:如何動態的在數據庫中建立數據表。我們在什麼是數據庫中講解講過,表是一種關係,那麼這種關係可否能實現動態的建立呢?也就是說,我們在程序中用代碼建立數據表,是否可以做到呢?我們在做程序時經常會用到寫數據庫時要建立數據表,而手工建立確實很麻煩,我們考慮要用VBA代碼去建立,是的,用代碼去建立是完全可以的,也非常的簡單。
實例的應用:在一個數據庫mydata中已經存在了一個表”員工記錄”,我們要建立另外的一個表“信息參考”,這個表中的內容是為了儲存處包括各個部門的部門名稱,和部門的定崗人數兩個字段,我們要看看這個代碼該如何完成的。
1 動態建立和刪除數據表的應用代碼
代碼如下:
Sub mynztableJL()
Dim cnADO, rsADO As Object
Dim strPath, myTable, strSQL As String
Set cnADO = CreateObject(“ADODB.Connection”)
Set rsADO = CreateObject(“ADODB.Recordset”)
strPath = ThisWorkbook.Path & “mydata2.accdb”
myTable = “信息參考”
TT = False
cnADO.Open “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” & strPath
Set rsADO = cnADO.OpenSchema(20, Array(Empty, Empty, myTable, Empty))
If Not rsADO.EOF Then
MsgBox “工作表已經存在,是否刪除數據表?”, vbInformation, “數據表判斷”
strSQL = “DROP TABLE ” & myTable
cnADO.Execute strSQL
TT = True
Else
MsgBox “數據表不存在,下面將建立工作表”, vbInformation, “數據表判斷”
End If
strSQL = “CREATE TABLE ” & myTable _
& “(部門 text(20) not null,總人數 text(10) not null)”
cnADO.Execute strSQL
If TT <> True Then
MsgBox “創建數據表成功!” & vbCrLf & “數據表名稱為:” & myTable, , “創建數據表”
Else
MsgBox “創建數據表重新創建成功!” & vbCrLf & “數據表名稱為:” & myTable, , “創建數據表”
End If
rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
代碼的截圖:

2 代碼的解讀和實現效果
代碼的講解:
1) strSQL = “DROP TABLE ” & myTable
cnADO.Execute strSQL
這是通過SQL,使用 DROP 語句,刪除表。
備註:通過使用 DROP 語句,可以輕鬆地刪除索引、表和數據庫。
2) Set rsADO = cnADO.OpenSchema(20, Array(Empty, Empty, myTable, Empty))
If Not rsADO.EOF Then
MsgBox “工作表已經存在,是否刪除數據表?”, vbInformation, “數據表判斷”
strSQL = “DROP TABLE ” & myTable
cnADO.Execute strSQL
TT = True
Else
MsgBox “數據表不存在,下面將建立工作表”, vbInformation, “數據表判斷”
End If
在上述的代碼中首先要判斷myTable工作表即”信息參考”的表是否存在,如果存在那麼首先要刪除這個已經存在的數據表,為了達到人機交互,在刪除之前要徵得用戶的同意。
如果不存在數據表,那麼會提示用戶,下面將創建。
3) strSQL = “CREATE TABLE ” & myTable _
& “(部門 text(20) not null,總人數 text(10) not null)”
cnADO.Execute strSQL
上述代碼創建了一個myTable工作表即”信息參考”的數據表,這個工作表有兩個字段,
① 部門 text(20) not null 名稱為“部門”, 文本 20個字符長,不為空
② 總人數 text(10) not null名 稱為“總人數”,文本 10個字符長,不為空
③ CREATE TABLE 語句用於創建數據庫中的表。
語法:CREATE TABLE 表名稱
(
列名稱1 數據類型,
列名稱2 數據類型,
列名稱3 數據類型,
….
)
4) If TT <> True Then
MsgBox “創建數據表成功!” & vbCrLf & “數據表名稱為:” & myTable, , “創建數據表”
Else
MsgBox “創建數據表重新創建成功!” & vbCrLf & “數據表名稱為:” & myTable, , “創建數據表”
End If
上面代碼中彈出對話框提示用戶數據表創建成功,這裡提示用戶創建的過程是不同的,一種情況是原來沒有此數據表是新創建的,一種情況是原先存在此工作表,被刪除了,然後再創建的。這個判斷是通過的一個變量TT來確認的。
5) rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
上述代碼是關閉連接,並釋放內存。在代碼的編寫過程中。一定記着最後要關閉連接和記錄集,最後還要釋放內存。
下面我們看看代碼的運行:


如果是原先存在此數據表,則會有下面的提示:


原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/251241.html