【问题标题】:VBA ADODB Connection -SQL QUERYVBA ADODB 连接 -SQL 查询
【发布时间】:2016-05-10 12:00:55
【问题描述】:

我在 VBA 中运行但同样不起作用。出现错误,没有为一个或多个必需参数指定值。

我的查询:

esql = "Select MAPPING_MONTH.DT,SUM(MAIL_ACTIVE_Base_Tracker_GA_AM_AO.COUNT) as GA_COUNT From MAPPING_MONTH A LEFT OUTER JOIN MAIL_ACTIVE_Base_Tracker_GA_AM_AO B on A.DT=B.DATE where ((MAIL_ACTIVE_Base_Tracker_GA_AM_AO.CIRCLE)= " & """" & FName & "GROUP BY MAIL_ACTIVE_Base_Tracker_GA_AM_AO.CIRCLE"")"

RS.Open (esql)、CN、adOpenStatic、adLockReadOnly

【问题讨论】:

  • 我注意到您正在为表 A 和 B 设置别名,但仅在连接条件中使用别名,而不是在 select、where 或 group by 子句中。这可能会导致问题。
  • 错误可能是由以下行引起的:"""" & FName & "GROUP BY MAIL_ACTIVE_Base_Tracker_GA_AM_AO.CIRCLE"")"...你需要在FNameGROUP BY之间有一个空格。

标签: sql vba connection adodb


【解决方案1】:

虽然缺少一些可能有助于调试代码的代码,但这里有一些改进(可能)已经解决了您的问题。如果不是这种情况,那么您可能需要考虑更新您的帖子并包含更多代码(您在其中声明 RSCN 并设置 ADODB.Connection)。

话虽如此,以下是建议的更改:

esql = "      select  MAPPING_MONTH.DT, "
esql = esql & "        sum(MAIL_ACTIVE_Base_Tracker_GA_AM_AO.COUNT) as GA_COUNT "
esql = esql & "from    MAPPING_MONTH A "
esql = esql & "left outer join MAIL_ACTIVE_Base_Tracker_GA_AM_AO B "
esql = esql & "on      A.DT = B.DATE "
esql = esql & "where   MAIL_ACTIVE_Base_Tracker_GA_AM_AO.CIRCLE = N'" & FName & "' " 
sql = esql & "group by MAIL_ACTIVE_Base_Tracker_GA_AM_AO.CIRCLE "

RS.Open esql, CN, adOpenStatic, adLockReadOnly

变化:

  1. 删除RS.Open 行中esql 周围的括号。
  2. 删除构造的 T-SQL 语句中的括号
  3. 将 T-SQL 中的 " 交换为 ' 以将文件名包含为文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 2019-06-08
    • 2014-05-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多