【问题标题】:Difference between Excel 2010 VBA DB2 functionality and Access 2007 DB2 functionality?Excel 2010 VBA DB2 功能和 Access 2007 DB2 功能之间的区别?
【发布时间】:2012-10-02 14:14:06
【问题描述】:

解决方案:

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

问题:

我有一个包含 DB2 链接表的 Access 2007 实例。我还有一个 Excel 2010 VBA 脚本可以访问同一个 DB2 表。

从这个 DB2 表中,我选择了一个用户 ID、位置、报告经理 ID 和报告经理位置。前 3 个字段直接存储,而报告经理位置只能通过链接 userID 和报告经理 id 的子查询得出,并获取报告经理 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

【问题讨论】:

  • 大写。据我记得,Excel 是区分大小写的。
  • @Remou 你的意思是在'NOT IN ('location one')'部分吗?我的查询和数据库中的所有内容都是一样的。
  • 是的,我知道 A 在 Excel 中不等于 a。我没有测试A是否是IN ("a")我认为空白/空值也有问题。
  • 我测试过,不是大写。顺便说一句,使用 NOT IN 的非常简单的查询在 Excel 中按预期工作,带有单引号。
  • @Remou 我已经用我的 Excel 代码更新了。

标签: ms-access excel db2 subquery vba


【解决方案1】:

解决方案:

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

【讨论】:

    猜你喜欢
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多