SQL 查詢語句-WHERE

按條件篩選 使用SQL關鍵詞WHERE查詢中的條件指定要滿足什麼標準信息,去掉不滿足條件的數據(刪除用戶不要的數據)。 WHERE語句中可以有多個條件,條件之間可以用操作符AND 或者OR進行連接。 WHERE語句的語法結構如下:

SELECT 列字段名稱 FROM [表名稱$] WHERE 列字段名 運算符 值

運算符包含大於、小於、等於、不等於、大於或等於、小於或等於、IN、 BETWEEN、AND等 。

應用實例說明,還是昨天數據(為了更好的更新今天的文章,修改了一點數據),只篩選出2號倉的數據;再篩選出入庫數量大於60的數據

源數據:

SQL 查詢語句-WHERE

查詢內容

只查詢2號倉的數據:

SQL 查詢語句-WHERE

查詢2號倉且入庫數量大於60的數據:

SQL 查詢語句-WHERE

代碼運行的結果如下:

SQL 查詢語句-WHERE

SQL 查詢語句-WHERE

代碼如下:

SQL 查詢語句-WHERE

SQL 查詢語句-WHERE

Sub DoSql_Execute3()
 Dim cnn As Object, rst As Object
 Dim Mypath As String, Str_cnn As String, Sql As String
 Dim i As Long
 Set cnn = CreateObject("adodb.connection")
 '以上是第一步,後期綁定ADO
 
 Mypath = ThisWorkbook.FullName
 '以上獲取當前工作簿的路徑及名稱
 
 If Application.Version < 12 Then
 '格式為.xls,調用下述語句
 Str_cnn = "Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & Mypath
 Else
 '格式為.xlsx,調用下述語句
 Str_cnn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & Mypath
 End If
 cnn.Open Str_cnn
 '判斷一下當前Excel的版本,12.0以下使用“Provider=Microsoft.Jet.Oledb.4.0”,以上使用“Microsoft.ACE.OLEDB.12.0”
 '以上是第二步,建立鏈接
 '
 Sql = "SELECT 條碼,倉位,貨號,入庫數量 FROM [商品信息目錄$] where 倉位='2號倉' and 入庫數量>60"
 'Sql語句,查詢商品信息目錄表中條碼,倉位,貨號,入庫數量 並且只篩選出倉位=2號倉的數據,並且入庫的數量要大於60
 [a2:d1000].ClearContents
 '清空[a2:c1000]區域內容
 Range("a2").CopyFromRecordset cnn.Execute(Sql)
 'Execute語句先執行SQL語句
 '使用單元格對象的CopyFromRecordset方法將SQL查詢到的內容複製到D2單元格為左上角的單元格區域
 '以上是第三步,執行SQL語句並將數據讀入表格指定區域
 cnn.Close
 '關閉鏈接
 Set cnn = Nothing
 '釋放內存
End Sub
 

代碼解析

代碼我放了一個例子,大部分的代碼是一致的,只有SQL的句子不一樣。需要注意的是:倉位='2號倉' 2好倉的的符號是英文輸入法下的單引號,不是雙引號。

點擊關注可以更方便的查看Excel VBA的案例文章

私信 SQL 可以獲取SQL代碼的Excel文件

私信 視頻 可以獲取54集VBA入門視頻

私信 VBA或 vba 可以獲取文章中含VBA代碼的Excel文件


分享到:


相關文章: