同时删除两张表的数据_把数据表中对应工作表的数据首先删除,然后导入数据...
大家好,我們今日繼續(xù)講解VBA數(shù)據(jù)庫解決方案的第28講內(nèi)容:利用VBA,把數(shù)據(jù)表中對應工作表的數(shù)據(jù)首先刪除,然后向數(shù)據(jù)表中導入工作表數(shù)據(jù)。數(shù)據(jù)庫的講解已經(jīng)持續(xù)一段時間了,從對簡單數(shù)據(jù)庫的認識到利用VBA對數(shù)據(jù)庫的操作,我們一步步的走來,估計大家已經(jīng)學到了很多知識。最近的內(nèi)容主要是操作,我把我可能想到的各種情況給大家介紹講解,這些都是我們在實際的工作中會遇到的情況,只要大家掌握了代碼,并結(jié)合一下自己的工作實際,很快就會寫出自己的代碼。當然要想改代碼必須對代碼有全面的理解。
今日給大家講的情況是:數(shù)據(jù)庫錄入錯了,但關鍵的字段沒有錯誤,這時我們怎么處理呢?這時的處理方案是:首先要刪除之前錄入的數(shù)據(jù),然后修改數(shù)據(jù)并再次錄入。
實例:我們在錄入員工信息時,不小心把民族給錄入錯誤,如下面的工作表:
第2行到第5行,人員的民族應該為漢,不小心錄入了回族,這時改怎么處理呢?這就是我這節(jié)要面對的解決方案:先刪除,再導入正確的。怎么做到呢:看下面的代碼:
Sub mynzCreateDataTable_6() '第28講利用VBA,根據(jù)工作表的數(shù)據(jù),在數(shù)據(jù)表中先刪除已有的數(shù)據(jù),然后添加記錄
Dim cnADO, rsADO As Object
Dim strPath, strTable, strWhere, strSQL, strMsg As String
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.Recordset")
strPath = ThisWorkbook.Path & "mydata2.accdb"
strTable = "員工信息"
cnADO.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & strPath
'匯報給用戶記錄數(shù)
strSQL = "SELECT * FROM " & strTable
rsADO.Open strSQL, cnADO, 1, 3
MsgBox "當前記錄數(shù)為:" & rsADO.RecordCount
rsADO.Close
'打開數(shù)據(jù)表中存在的員工編號相同的記錄
strSQL = "DELETE FROM " & strTable & " A WHERE EXISTS(" _
& "SELECT * FROM [Excel 12.0;Database=" & _
ThisWorkbook.FullName & "].[" & ActiveSheet.Name & "$" _
& Range("a1").CurrentRegion.Address(0, 0) & "] " _
& "WHERE 員工編號=A.員工編號)"
cnADO.Execute strSQL '把這些記錄刪除
'下面將添加記錄
strSQL = "INSERT INTO " & strTable & " SELECT * FROM [Excel 12.0;Database=" _
& ThisWorkbook.FullName & ";].[" & ActiveSheet.Name & "$" _
& Range("A1").CurrentRegion.Address(0, 0) & "]"
cnADO.Execute strSQL
MsgBox "紀錄添加成功。
《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的同时删除两张表的数据_把数据表中对应工作表的数据首先删除,然后导入数据...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tp5数组为什么要中括号_VBA数组与字
- 下一篇: python并行编程语言_Python3