Ms access Excel 2010 VBA DB2功能和Access 2007 DB2功能之间的区别?

Ms access Excel 2010 VBA DB2功能和Access 2007 DB2功能之间的区别?,ms-access,excel,db2,subquery,vba,Ms Access,Excel,Db2,Subquery,Vba,解决方案: 事实证明,我只是在WHERE条件下使用了错误的标准。我试图排除的位置有很多变化,我没有看到差异。感谢Remou在聊天中帮助我 问题: 我有一个Access 2007实例,其中包含一个DB2链接表。我还有一个Excel2010VBA脚本,可以访问同一个DB2表 从这个DB2表中,我选择一个用户ID、位置、报表管理器ID和报表管理器位置。前3个字段直接存储,而reporting manager位置只能通过链接userID和reporting manager id并获取reporting

解决方案:

事实证明,我只是在WHERE条件下使用了错误的标准。我试图排除的位置有很多变化,我没有看到差异。感谢Remou在聊天中帮助我

问题:

我有一个Access 2007实例,其中包含一个DB2链接表。我还有一个Excel2010VBA脚本,可以访问同一个DB2表

从这个DB2表中,我选择一个用户ID、位置、报表管理器ID和报表管理器位置。前3个字段直接存储,而reporting manager位置只能通过链接userID和reporting manager id并获取reporting manager id位置的子查询来派生

这个查询正好提供了我想要的->

SELECT DISTINCT main.USERID, main.LOCATION, main.REPORT_MGR_USERID,  manager_data.LOCATION 
    FROM employee_table main
    INNER JOIN employee_table manager_data
    ON main.REPORT_MGR_USERID=manager_data.USERID
但是,我发现了一些我不想在结果中显示的位置。所以我开发了这个查询->

SELECT DISTINCT main.USERID, main.LOCATION, main.REPORT_MGR_USERID,  manager_data.LOCATION 
FROM employee_table main
INNER JOIN employee_table manager_data
    ON main.REPORT_MGR_USERID=manager_data.USERID
WHERE main.LOCATION NOT IN ('location one', 'location two')
唯一的区别是->

WHERE main.LOCATION NOT IN ('location one', 'location two')
在Access 2007实例中运行时,这与预期的一样有效,但在Excel VBA实例(我实际需要它的地方)中不起作用。我已经验证了查询字符串是否完全相同

Access和Excel之间的工作方式有什么不同

编辑:

以下是我如何在Excel中执行->

sqlString = "SELECT DISTINCT main.USERID, main.LOCATION, main.REPORT_MGR_USERID,  manager_data.LOCATION " _
                & "FROM employee_table main " _
                & "INNER JOIN employee_table manager_data " _
                & "ON main.REPORT_MGR_USERID=manager_data.USERID   " _
                & "WHERE main.LOCATION NOT IN ('location one', 'location two')"

sConnection = "Provider=IBMDADB2.DB2COPY1;Persist Security Info=True;User ID=" & connectingUserID & ";Password=" & connectingPassword & ";Data Source=EmployeeInfoDB;Mode=Read"

Set adoConnection = New ADODB.Connection

Set nameRecordSet = New ADODB.Recordset

adoConnection.Open sConnection

nameRecordSet.Open Source:=sqlString, ActiveConnection:=adoConnection
解决方案:

事实证明,我只是在WHERE条件下使用了错误的标准。我试图排除的位置有很多变化,我没有看到差异。感谢Remou在聊天中帮助我

解决方案:


事实证明,我只是在WHERE条件下使用了错误的标准。我试图排除的位置有很多变化,我没有看到差异。感谢Remou在聊天中帮助我

资本化。据我所知,Excel是区分大小写的。@Remou您的意思是在“不在('location one')”部分?我的查询和数据库中的内容都是一样的。是的,我知道
A
不等于Excel中的
A
。我还没有测试
A
是否是
中的(“A”)
我想空格/空也有问题。我测试了,不是大写。另一方面,使用NOT IN的一个非常简单的查询在Excel中按预期工作,带有单引号。@Remou我已经用我的Excel代码进行了更新。大写。据我所知,Excel是区分大小写的。@Remou您的意思是在“不在('location one')”部分?我的查询和数据库中的内容都是一样的。是的,我知道
A
不等于Excel中的
A
。我还没有测试
A
是否是
中的(“A”)
我想空格/空也有问题。我测试了,不是大写。另一方面,使用NOT IN的一个非常简单的查询在Excel中按预期工作,带有单引号。@Remou我已经用我的Excel代码进行了更新。