tft每日頭條

 > 圖文

 > access中表和查詢的區别

access中表和查詢的區别

圖文 更新时间:2025-01-25 00:15:05

access中表和查詢的區别?ADO和DAO查詢條件like模糊查詢有一些區别,使用到的模塊匹配字符不同若用錯了匹配符會導緻得不到數據,誤以為是bug,下面我們就來說一說關于access中表和查詢的區别?我們一起去了解并探讨一下這個問題吧!

access中表和查詢的區别(Access中ADO和DAOlike查詢的區别)1

access中表和查詢的區别

ADO和DAO查詢條件like模糊查詢有一些區别,使用到的模塊匹配字符不同。若用錯了匹配符會導緻得不到數據,誤以為是bug。

例如有時候,在Access寫vba代碼用SQL語句查詢,可能會先在查詢器中測試看SQL語句是否正确。

通常的測試一般都沒問題,但用到like模糊查詢就有所不同。在查詢器中我們會用到*号匹配多個字符。

例如,在查詢器用如下SQL語句:

  1. Select * from tblTest Where Field1 like '*jack*'

查詢字段Field1包含jack的字符串的數據。(假設查詢到3條數據)

若把這個SQL語句放到代碼ADO中,如下:

  1. Dim rs As New ADODB.Recordset '需要引用ADO'
  2. Dim strSql As String
  3. strSQL = "Select * from tblTest Where Field1 like '*jack*'"
  4. rs.Open strSql, CurrentProject.Connection, 1, 3
  5. Debug.Print rs.RecordCount '輸出查詢的記錄數'
  6. rs.Close

數據查詢到的記錄數為0。這就郁悶了。

若把這個SQL語句用DAO查詢,如下:

  1. Dim rst As DAO.Recordset
  2. Dim strSql As String
  3. strSql = "Select * from tblTest Where Field1 like '*jack*'"
  4. Set rst = CurrentDb.OpenRecordset(strSql)
  5. Debug.Print rst.RecordCount
  6. rst.Close

則可以查到數據。

造成這種現象是因為ADO和DAO的like查詢條件用到的多個字符匹配符不一樣。

ADO是用%

DAO是用*

正确的ADO代碼如下(把*号改成%号):

  1. Dim rs As New ADODB.Recordset '需要引用ADO'
  2. Dim strSql As String
  3. strSql = "Select * from tblTest Where Field1 like '%jack%'"
  4. rs.Open strSql, CurrentProject.Connection, 1, 3
  5. Debug.Print rs.RecordCount '輸出查詢的記錄數'
  6. rs.Close

修正之後,這次就可以正确得到數據。

可能你還有一個疑問。為什麼Access的查詢器like查詢是用*?

因為Access是基于DAO的。所以查詢器裡面的SQL是遵循DAO的規則。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved