sql - 为什么 ADO 记录集返回的记录多于基础 Access 查询

标签 sql ms-access vba ado

我在 Access 2016 中有一个表 Table1(主键 = Code),具有以下值:

=====+=============
Code + Name
=====+=============
A1   | AU All
A2   | AU Large
A3   | AU Size
A4   | Unassigned
=====+=============

我有一个查询,Query1 定义为:

SELECT Table1.Code
FROM Table1
WHERE (((Table1.Name) Not Like "AU *"));

在 Access 中,查询返回 1 条记录,正如预期的那样:

Code
======
A4
======

但是,当我使用 ADO 2.8 或 6.1 打开查询时,使用以下代码:

Option Compare Database
Option Explicit

Sub test()
  Dim rst As ADODB.Recordset
  Set rst = New ADODB.Recordset

  With rst
    .Open "Query1", CurrentProject.Connection, adOpenStatic, adLockReadOnly
    Do While Not .EOF
      Debug.Print .Fields("Code").Value
      .MoveNext
    Loop
    Debug.Print "Record Count : " & .RecordCount
    .Close
  End With

End Sub

所有 4 条记录均已返回,如调试输出所示:

A1
A2
A3
A4
Record Count : 4

为什么我得到不同的结果?

最佳答案

尝试使用从 * 到 % 的通配符作为

  .Open "SELECT Table1.Code FROM Table1 
WHERE (((Table1.Name) Not Like 'AU %'))", 
CurrentProject.Connection, adOpenStatic, adLockReadOnly

查看更多details

关于sql - 为什么 ADO 记录集返回的记录多于基础 Access 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37939608/

相关文章:

database - 数据库更新时如何刷新表单?

vba - 使用vba选择列表框项目

vba - 使用连续数据列中的特定条件选择范围

excel - Excel中连接形状的VBA识别

string - VBA 使用字符串作为变量名

sql - Postgresql:一行中多行的值

sql - MINUS 与 NOT 在 where 子句中

SQL 选择 : Take value from XML field

sql - Access-根据另一个表中的任何匹配字段计算一个字段

mysql - 多个不同的计数与 where