access中表和查詢的區别?ADO和DAO查詢條件like模糊查詢有一些區别,使用到的模塊匹配字符不同若用錯了匹配符會導緻得不到數據,誤以為是bug,下面我們就來說一說關于access中表和查詢的區别?我們一起去了解并探讨一下這個問題吧!
access中表和查詢的區别
ADO和DAO查詢條件like模糊查詢有一些區别,使用到的模塊匹配字符不同。若用錯了匹配符會導緻得不到數據,誤以為是bug。
例如有時候,在Access寫vba代碼用SQL語句查詢,可能會先在查詢器中測試看SQL語句是否正确。
通常的測試一般都沒問題,但用到like模糊查詢就有所不同。在查詢器中我們會用到*号匹配多個字符。
例如,在查詢器用如下SQL語句:
- Select * from tblTest Where Field1 like '*jack*'
查詢字段Field1包含jack的字符串的數據。(假設查詢到3條數據)
若把這個SQL語句放到代碼ADO中,如下:
- Dim rs As New ADODB.Recordset '需要引用ADO'
- Dim strSql As String
- strSQL = "Select * from tblTest Where Field1 like '*jack*'"
- rs.Open strSql, CurrentProject.Connection, 1, 3
- Debug.Print rs.RecordCount '輸出查詢的記錄數'
- rs.Close
數據查詢到的記錄數為0。這就郁悶了。
若把這個SQL語句用DAO查詢,如下:
- Dim rst As DAO.Recordset
- Dim strSql As String
- strSql = "Select * from tblTest Where Field1 like '*jack*'"
- Set rst = CurrentDb.OpenRecordset(strSql)
- Debug.Print rst.RecordCount
- rst.Close
則可以查到數據。
造成這種現象是因為ADO和DAO的like查詢條件用到的多個字符匹配符不一樣。
ADO是用%
DAO是用*
正确的ADO代碼如下(把*号改成%号):
- Dim rs As New ADODB.Recordset '需要引用ADO'
- Dim strSql As String
- strSql = "Select * from tblTest Where Field1 like '%jack%'"
- rs.Open strSql, CurrentProject.Connection, 1, 3
- Debug.Print rs.RecordCount '輸出查詢的記錄數'
- rs.Close
修正之後,這次就可以正确得到數據。
可能你還有一個疑問。為什麼Access的查詢器like查詢是用*?
因為Access是基于DAO的。所以查詢器裡面的SQL是遵循DAO的規則。
, 更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!