大家好,我們今日繼續講解VBA數據庫解決方案的第28講內容:利用VBA,把數據表中對應工作表的數據首先刪除,然后向數據表中導入工作表數據。
數據庫的講解已經持續一段時間了,從對簡單數據庫的認識到利用VBA對數據庫的操作,我們一步步的走來,估計大家已經學到了很多知識。最近的內容主要是操作,我把我可能想到的各種情況給大家介紹講解,這些都是我們在實際的工作中會遇到的情況vb代碼在數據庫表的末尾添加記錄,只要大家掌握了代碼,并結合一下自己的工作實際,很快就會寫出自己的代碼。當然要想改代碼必須對代碼有全面的理解。
今日給大家講的情況是:數據庫錄入錯了,但關鍵的字段沒有錯誤,這時我們怎么處理呢?這時的處理方案是:首先要刪除之前錄入的數據,然后修改數據并再次錄入。
實例:我們在錄入員工信息時,不小心把民族給錄入錯誤,如下面的工作表:
第2行到第5行,人員的民族應該為漢,不小心錄入了回族,這時改怎么處理呢?這就是我這節要面對的解決方案:先刪除,再導入正確的。怎么做到呢:看下面的代碼:
Sub 6() '第28講利用VBA,根據工作表的數據,在數據表中先刪除已有的數據,然后添加記錄
, rsADO As
Dim , , , , As
Set cnADO = ("ADODB.")
Set rsADO = ("ADODB.")
= .Path & "\.accdb"
= "員工信息"
cnADO.Open "=.Ace.OLEDB.12.0;Data ="&
'匯報給用戶記錄數
= " * FROM " &
rsADO.Open , cnADO, 1, 3
"當前記錄數為:" & rsADO.
rsADO.Close
'打開數據表中存在的員工編號相同的記錄
= " FROM " & & " A (" _
& " * FROM [Excel 12.0;=" & _
. & "].[" & .Name &"$" _
& Range("a1")..(0, 0) & "]" _
& "WHERE員工編號=A.員工編號)"
cnADO. '把這些記錄刪除
'下面將添加記錄
= " INTO " & & " * FROM[Excel 12.0;=" _
& . & ";].[" &.Name & "$" _
& Range("A1")..(0, 0) &"]"
cnADO.
"紀錄添加成功。", , "添加紀錄"
'匯報給用戶記錄數
= " * FROM " &
rsADO.Open , cnADO, 1, 3
"最后的記錄數為:" & rsADO.
'釋放內存
rsADO.Close
cnADO.Close
Set rsADO =
Set cnADO =
End Sub
代碼截圖:
代碼解讀:代碼共分三部分,第一部分仍是建立連接記錄集一直到 "當前記錄數為:" & rsADO.后關閉了記錄集的連接,這部分和前幾講的內容是一致的,不再過多的講解,
第二部分:
'打開數據表中存在的員工編號相同的記錄
= " FROM " & & " A (" _
& " * FROM [Excel 12.0;=" & _
. & "].[" & .Name &"$" _
& Range("a1")..(0, 0) & "]" _
& "WHERE員工編號=A.員工編號)"
cnADO. '把這些記錄刪除
'下面將添加記錄
= " INTO " & & " *FROM [Excel 12.0;=" _
& . & ";].[" &.Name & "$" _
& Range("A1")..(0, 0) &"]"
cnADO.
"紀錄添加成功。", , "添加紀錄"
這部分中,先要打開已經有的記錄,然后刪除,接著,在此導入正確的記錄。我們要理解的是: = " FROM " & & " (" _
& " * FROM [Excel 12.0;=" & _
. & "].[" & .Name &"$" _
& Range("a1")..(0, 0) & "]" _
& "WHERE員工編號=A.員工編號)"
這條SQL語句的意思是刪除一些記錄,什么記錄呢?就是在數據表中兩者員工編號相同的記錄。然后,ADO執行SQL命令:cnADO. 。
在此導入記錄就相對簡單了:同樣
= " INTO " & & " * FROM [Excel 12.0;=" _
& . & ";].[" &.Name & "$" _
& Range("A1")..(0, 0) &"]"
然后執行。
這里我們介紹一下命令和 INTO命令的意義:
1.方法可以執行指定SQL語句.
2 INTO語句用于向表格中插入新的行。
第三部分的代碼是從匯報給用戶記錄數,同時要釋放內存。這部分就不再多說了。
下面看看我們程序的運行情況:
我們首先修正EXCEL工作表中的記錄為正確的值:
然后運行vb代碼在數據庫表的末尾添加記錄,首先會提示當前的記錄數:
然后,后臺刪除記錄,添加記錄,提示給我們: