免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
VBA數(shù)據(jù)庫解決方案第41講:工作表中存在的數(shù)據(jù)只要在數(shù)據(jù)表中沒有,那么批量添加

大家好,今日繼續(xù)講解VBA數(shù)據(jù)庫解決方案的第41講,今日的內(nèi)容是:工作表中存在的數(shù)據(jù)只要在數(shù)據(jù)表中沒有,那么批量添加。在前幾個章節(jié)中我重點給大家講解了ADO連接EXCEL的方案,通過這個方案在實際的工作中可以解決一系列的實際問題,有的問題簡單些,有的問題會復雜些,但總會在工作中看到實例的影子。ADO連接EXCEL中我測試是連接07版本以上的EXCEL,連接采用的是前期和后期相結(jié)合的方法。只是出于我個人的一些習慣,有不清楚的朋友要弄清必要的知識點。

VBA數(shù)據(jù)庫解決方案是面向給中級及以上的人員教程,在講解中側(cè)重于實例的解決,不會再對內(nèi)部的一些函數(shù)啊,語句啊做詳細的講解了,希望基本的知識點還沒有完善掌握的朋友,通過《VBA代碼解決方案》來完善自己。

今日的內(nèi)容實例:對于工作表中給出的數(shù)據(jù),首先在數(shù)據(jù)表中確認,如果數(shù)據(jù)表中沒有那么就增加相應(yīng)的記錄。如下面的工作表數(shù)據(jù): 

  其中100040100041的記錄在數(shù)據(jù)庫的數(shù)據(jù)表中是沒有的,我們要把這兩條的記錄增加進數(shù)據(jù)表中。怎么做到呢?

我們先分析一下:首先我們要檢查這些記錄在數(shù)據(jù)表中有沒有,對于沒有的才增加記錄,那么我將建立一個記錄集。這個記錄集就是在工作表中存在而數(shù)據(jù)表為null 的記錄。

代碼:

Sub mynzUpdateRecords_41() '41在數(shù)據(jù)表沒有而工作表中存在的數(shù)據(jù)在數(shù)據(jù)表中批量增加的方案

   Dim cnADO, rsADO As Object

   Dim strPath, strTable, 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

      '加入沒有記錄,那么增加

       strSQL = " SELECT A.* FROM [Excel 12.0;Database=" & _

           ThisWorkbook.FullName & ";].[" & ActiveSheet.Name& "$" _

           & Range("A1").CurrentRegion.Address(0, 0) & "] A" _

           & "LEFT JOIN " & strTable & " B " _

           & "ON A.員工編號=B.員工編號 WHERE B.員工編號 IS NULL"

       Set rsADO = CreateObject("ADODB.Recordset")

       rsADO.Open strSQL, cnADO, 1, 3

       If rsADO.RecordCount > 0 Then

           strSQL = "INSERT INTO " & strTable & strSQL

           cnADO.Execute strSQL

           strMsg = strMsg & vbCrLf & rsADO.RecordCount & "條記錄已添加到數(shù)據(jù)庫!"

       Else

           strMsg = "這些記錄都已經(jīng)存在,沒有記錄添加到數(shù)據(jù)庫!"

       End If

     MsgBox strMsg, vbInformation, "提示"

    rsADO.Close

    '匯報給用戶記錄數(shù)

    strSQL = "SELECT * FROM " & strTable

    rsADO.Open strSQL, cnADO, 1, 3

    MsgBox "最新的記錄數(shù)為:" & rsADO.RecordCount

    rsADO.Close

    '釋放內(nèi)存

   cnADO.Close

   Set rsADO = Nothing

   Set cnADO = Nothing

End Sub

代碼截圖:

代碼講解:

1  '加入沒有記錄,那么增加

       strSQL = " SELECT A.* FROM [Excel 12.0;Database=" & _

           ThisWorkbook.FullName & ";].[" & ActiveSheet.Name& "$" _

           & Range("A1").CurrentRegion.Address(0, 0) & "] A" _

           & "LEFT JOIN " & strTable & " B " _

           & "ON A.員工編號=B.員工編號 WHERE B.員工編號 IS NULL"

       Set rsADO = CreateObject("ADODB.Recordset")

        rsADO.Open strSQL, cnADO, 1, 3

       If rsADO.RecordCount > 0 Then

           strSQL = "INSERT INTO " & strTable & strSQL

           cnADO.Execute strSQL

           strMsg = strMsg & vbCrLf & rsADO.RecordCount & "條記錄已添加到數(shù)據(jù)庫!"

       Else

           strMsg = "這些記錄都已經(jīng)存在,沒有記錄添加到數(shù)據(jù)庫!"

       End If

     MsgBox strMsg, vbInformation, "提示"

    rsADO.Close

在這部分代碼中實現(xiàn)了建立一個記錄集,這個記錄集是工作表中存在而數(shù)據(jù)表中是不存在的,這里要特別注意的是SQL語句的寫法:

strSQL = " SELECT A.* FROM [Excel12.0;Database=" & _

           ThisWorkbook.FullName & ";].[" & ActiveSheet.Name& "$" _

           & Range("A1").CurrentRegion.Address(0, 0) & "] A" _

           & "LEFT JOIN " & strTable & " B " _

           & "ON A.員工編號=B.員工編號 WHERE B.員工編號 IS NULL"

這個SQL的語句中分別連接了EXCEL和數(shù)據(jù)表,條件是A中存在的在B中為NULL的記錄.

2  本書講解的是VBA數(shù)據(jù)庫的解決方案,一些SQL語句沒有做詳細的講解,大家可以記住即可。SQL語句是一種專門的邏輯語言,如果大家不想專門的去學習,建議大家記住即可。

下面看我們的運行情況: 

今日內(nèi)容回向:

1  如何建立數(shù)據(jù)庫與EXCEL的雙重連接?

2  null0值么?

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
利用VBA向一個已有的數(shù)據(jù)表中添加數(shù)據(jù)記錄的方法
VBA與數(shù)據(jù)庫解決方案:Recordset記錄集合的動態(tài)查詢,并顯示結(jié)果
工作表數(shù)據(jù)與UserForm窗口的交互:如何實現(xiàn)數(shù)據(jù)的精確查找
如何在Excel中使用SQL語言?
提取固定位置(行或者單元格)數(shù)據(jù)的方法
Excel之VBA常用功能應(yīng)用篇:VBA查詢Access數(shù)據(jù)庫操作方法
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服