为什么selection.find在word vba中不返回所有结果?_工作表查询中,内连接Inner join的讲解...
大家好,我們繼續講解VBA數據庫解決方案,今日講解第56講內容: 數據表查詢中,內連接Inner join的講解。從這講開始給大家實例講解在查詢中各種連接方式的應用。為什么到現在才講解這塊內容呢?是的,很多的內容我在之前的文章中已經開始利用了,相信大家已經開始有所了解或許只是概念的欠缺,同時,隨著講解的深入大家發現SQL語句是操作數據庫的一個非常重要的工具,我的觀點一直是:搭積木思想。不要過多的糾纏于其中的算法,只要會利用就可以。至于為什么這么寫,那是專業人員的事情。
好了,先給大家簡單的解釋一下什么是內連接,內連接的查詢操作及其特點。
內連接也叫連接,是最早的一種連接。還可以被稱為普通連接或者自然連接,內連接是從結果表中刪除與其他被連接表中沒有匹配行的所有行。返回與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。在每個表中找出符合條件的共有記錄。
實例情景,下面的兩個工作表,一個是"數據",一個是"數據1"。我要把其中有型號一樣的數據提取出來,但是型號,生產廠,數量來自"數據"工作表,而供應商的數據來自"數據2"的數據。
下面看我給出的內連接的代碼,其實代碼并不難:
Sub mynzRecords_56() '第56講
Dim cnADO, rsADO As Object
Dim strPath, strSQL As String
Worksheets("56").Select
Cells.ClearContents
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.Recordset")
strPath = ThisWorkbook.FullName
cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath
strSQL = "Select a.型號,a.生產廠,a.數量,b.供應商 From [數據$]as a,[數據2$] as b Where a.型號=b.型號"
'strSQL = "Select a.型號,a.生產廠,a.數量,b.供應商 From [數據$] as a INNER JOIN [數據2$] as b ON a.型號=b.型號"
rsADO.Open strSQL, cnADO, 1, 3
For i = 1 To rsADO.Fields.Count
Cells(1, i) = rsADO.Fields(i - 1).Name
Next
Range("a2").CopyFromRecordset rsADO
rsADO.Close
cnADO.Close
Set rsADO = Nothing
Set cnADO = Nothing
End Sub
代碼截圖:
代碼講解:
1 cnADO.Open "provider=Microsoft.ACE.OLEDB.12.0;extended properties='excel 12.0;hdr=yes;imex=1';data source=" & strPath
此語句的代碼建立起ADO和Excel的連接,大家可以直接利用,只要是連接07版本以上的EXCEL即可。
2 strSQL = "Select a.型號,a.生產廠,a.數量,b.供應商 From [數據$]as a,[數據2$] as b Where a.型號=b.型號"
此語句的代碼為一個典型的SQL內連接的語句,用的是WHERE的表達式,大家要注意我字段的寫法和定義a,b 兩個數據表的寫法。不可以有絲毫的錯誤。
3 'strSQL = "Select a.型號,a.生產廠,a.數量,b.供應商 From [數據$] as a INNER JOIN [數據2$] as b ON a.型號=b.型號"
此語句的代碼為一個典型的SQL內連接的語句的另一種寫法,用的是的INNER JOIN….on…的表達式,大家要注意這種寫法和定義a,b 兩個數據表的寫法。大體上和上面的寫法是一致的,讀者可以根據自己的習慣利用。
下面看代碼的運行:
大家要注意,上述型號為QQ01的供應商為RRR05是取自數據2的數據。
今日內容回向:
1 什么是內連接?
2 內連接的兩種表法方式是什么?
3 如果將select后的字段去掉換成*號會是什么樣的結果?
總結
以上是生活随笔為你收集整理的为什么selection.find在word vba中不返回所有结果?_工作表查询中,内连接Inner join的讲解...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阳台上两块大玻璃宽窄相差3公分能看出来吗
- 下一篇: 福庆家具板是十 大名牌吗?值得用不