【发布时间】:2013-11-25 09:50:53
【问题描述】:
我几天来一直在寻找解决方案,但在任何地方都找不到任何东西。我有 Excel 与 Access 数据库交互。以下查询在 Access 中有效:
SELECT DISTINCT A.Timestamp, A.Identifier, A.Remarks, A.ActiveIndicator,
A.S4PDate, B.Timestamp, B.Identifier, B.Remarks, B.ActiveIndicator, B.S4PDate
FROM AAEPData AS A INNER JOIN AAEPData AS B ON A.Identifier = B.Identifier
WHERE (((A.Timestamp = '20131028' AND B.Timestamp = '20131014'))
AND ((datediff('d', A.S4PDate, B.S4PDate)) <> 0))
ORDER BY A.Identifier;
问题是如何将其转换为“VBA-SQL”。它应该看起来像这样,但我在使用它的 datediff 部分时遇到了麻烦。如何正确交接间隔天数?这是我的 VBA 代码:
sql = "SELECT DISTINCT A.Identifier, A.Remarks, A.ActiveIndicator, A.S4PDate,"
sql = sql & " B.Identifier, B.Remarks, B.ActiveIndicator, B.S4PDate "
sql = sql & "FROM AAEPData AS A "
sql = sql & "INNER JOIN AAEPData AS B ON ((A.Identifier = B.Identifier))"
sql = sql & "WHERE (((A.Timestamp = '20131028' AND B.Timestamp = '20131014')) "
sql = sql & "AND (Datediff('d', A.S4PDate, B.S4PDate) <> 0))) "
sql = sql & "ORDER BY B.Identifier ASC;"
当我这样做时,它不会返回值,但也不会给出错误。而且我确实在我查询的日期值 S4PDate 中有变化。有任何想法吗?非常感谢您的帮助。谢谢。
【问题讨论】:
-
单引号算作 VBA 中的注释指示符。将它们更改为双引号 (DateDiff("d",...) 并让我们知道会发生什么。
-
@craig.white -- 更改这些引号肯定会导致错误 -- 它会将字符串分隔在一行上,没有语法支持。