大家好,今日我們繼續(xù)講解VBA數據庫解決方案的第23講:利用VBA如何向一個已有的數據表中添加記錄。在上一講中我們講了如何把工作表的數據保存到新建的數據表中方案,這是非常好的方法,希望讀者能在實際的工作中多加利用。和《VBA代碼解決方案》一樣,讀者可以在我的資料中感覺到很多我們實際工作中問題的影子,我曾經不止一次的講過,VBA的實用性非常高,好好利用,可以大大提高我們的工作效率。
今天我們要講的是:對于一個已經存在的數據表,我們要向其中添加記錄的方案。其實這也是最普通的應用了,在我們的工作中隨處可以見到。我們的代碼該如何做到呢?
實例:在上一講的講解中,我們利用VBA代碼把之前的銷售資料做了備份,如下面的截圖:
到了第三個月,我們要把第三個月的數據追加進去,下面是3月的銷售記錄:
其實,這些都是來源于工作的實際,也是工作中確實存在的問題,讀者在學習的時候可以把這些代碼作為一個實例來利用,下面看我們的解決方案代碼:
Sub mynzCreateDataTable_1() '將工作表的數據添加到數據表中 第23講
Dim cnADO As New ADODB.Connection
Dim rsADO As ADODB.Recordset
Dim strPath, strSQL, strTable As String
strPath = ThisWorkbook.Path & '\mydata2.accdb'
strTable = '19年銷售情況'
cnADO.Open 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' & strPath
strSQL = 'SELECT * FROM ' & strTable
Set rsADO = New ADODB.Recordset
rsADO.Open strSQL, cnADO, 1, 3
'匯報給用戶記錄數
MsgBox '添加前記錄數為:' & rsADO.RecordCount
Sheets('Sheet4').Select
'添加記錄
t = 2
Do While Cells(t, 1) <> ''
rsADO.MoveLast
rsADO.addnew
For i = 0 To rsADO.Fields.Count - 1
rsADO.Fields(i) = Sheets('Sheet4').Cells(t, i + 1)
Next i
rsADO.Update
t = t + 1
Loop
'匯報給用戶最后的記錄數
MsgBox '添加后記錄數為:' & rsADO.RecordCount
rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
代碼截圖:
代碼講解:
1 Dim cnADO As New ADODB.Connection
Dim rsADO As ADODB.Recordset
Dim strPath, strSQL, strTable As String
strPath = ThisWorkbook.Path & '\mydata2.accdb'
strTable = '19年銷售情況'
cnADO.Open 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' & strPath
strSQL = 'SELECT * FROM ' & strTable
Set rsADO = New ADODB.Recordset
rsADO.Open strSQL, cnADO, 1, 3
以上的代碼我用了前期綁定的方法創(chuàng)建的ADO, 并打開了數據表的集合
2 '添加記錄
t = 2
Do While Cells(t, 1) <> ''
rsADO.MoveLast
rsADO.addnew
For i = 0 To rsADO.Fields.Count - 1
rsADO.Fields(i) = Sheets('Sheet4').Cells(t, i + 1)
Next i
rsADO.Update
t = t + 1
Loop
上述代碼是把工作表中的數據添加到數據表中.
這里需要講解的是: rsADO.addnew 和 rsADO.Update 語句,這兩條語句的作用是是向記錄集中添加記錄,和寫入記錄.
.addnew 告訴記錄集,我們要添加一行
.update 通知記錄集,我們要把準備好的這個行寫入數據庫了.
3 為了達到人機對話的目的,我在兩處有了代碼如下:
'匯報給用戶記錄數
MsgBox '添加前記錄數為:' & rsADO.RecordCount
'匯報給用戶最后的記錄數
MsgBox '添加后記錄數為:' & rsADO.RecordCount
運行的過程如下:首先顯示添加前的記錄:
運行完成后顯示添加后的記錄數:
最后看看我們運行完,添加好數據之后的數據庫截圖:
今日內容回向:
1 如何向已經有的數據記錄集中添加數據?
2 ADDNWE 和Update的作用是什么?