大家好今日繼續VBA數據庫解決方案的學習,今日講解第50講,多條件提取數據時between的用法。為什麼要提出這個問題呢?這個語法是在多條件數據庫查詢中經常用到的,但是應用的過程中,如果語法不對,會經常通不過,這裡把這個語法單獨的拿出來,給大家分享講解一下。還是以實例來說明,大家可以看到,在數據庫解決方案的講解中,不同于《VBA代碼解決方案》的講解,那裡的講解有必要給大家把每個知識點講到,而這裡的講解側重于實際的操作,側重于對問題的解決的對策。所以要求大家要先結合《VBA代碼解決方案》的内容把VBA的各個知識點了解一下,然後再開始數據庫的學習。
今日的實例.仍是我們之前的數據庫數據資料,如下:
我要把"出生日期"為1999/6/6和1999/6/12兩者之間的人員提取出來(含兩個開始和結束時間),其他的條件是:"部門"為"一廠" " 職務"為"班長",我們如何寫代碼呢?
下面看我給出的代碼:
Sub mynzRecords_50() '第50講 從數據庫多條件提取數據中between的用法
Dim cnADO, rsADO As Object
Dim strPath, strSQL, strTable 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
'strSQL = "SELECT * FROM " & strTable
strSQL = "select * from " & strTable _
& " where 部門='一廠' and 職務='班長' and 出生日期 between #1999/6/6# and #1999/6/12#" & " ORDER BY 員工編号 DESC"
rsADO.Open strSQL, cnADO, 1, 3
Worksheets("50").Select
Cells.ClearContents
For i = 0 To rsADO.Fields.Count - 1
ActiveSheet.Cells(1, i 1) = rsADO.Fields(i).Name
Next i
For i = 1 To rsADO.RecordCount
For j = 0 To rsADO.Fields.Count - 1
ActiveSheet.Cells(i 1, j 1) = rsADO.Fields(j)
Next j
rsADO.MoveNext
Next i
Range("A2").CopyFromRecordset rsADO
ActiveSheet.Columns(rsADO.Fields.Count).NumberFormat = "yyyy-mm-dd"
ActiveSheet.Columns.AutoFit
rsADO.Close
cnADO.Close
Set cnADO = Nothing
Set rsADO = Nothing
End Sub
代碼截圖:
代碼解讀:
1 strSQL = "select * from " & strTable _
& " where 部門='一廠' and 職務='班長' and 出生日期 between #1999/6/6# and #1999/6/12#" & " ORDER BY 員工編号 DESC"
上述代碼是關于本講的多條件設置的SQL語句寫法。其中重點是and 出生日期 between #1999/6/6# and #1999/6/12#" 在寫between 時後面一定要有一個and 并且兩邊要留空格,這個and 和前面的and 意義不同,前者表示是多條件, 這裡表示的是連接的是兩個值。其他的條件就不再一一講解了,和上一講的内容一樣。
下面看代碼的運行:
大家可以看看上面的結果,完全符合我們的預期。
今日内容回向:
1 between 在條件查詢中如何表示?
2 上述的between 條件是否有其他的實現辦法呢?
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!