【问题标题】:Excel Import VBA: Run-time 3075 Syntax error (missing operator) in query expressionExcel 导入 VBA:查询表达式中的运行时 3075 语法错误(缺少运算符)
【发布时间】:2016-11-22 19:39:16
【问题描述】:

我在以下 SQL 语句中收到缺少运算符的错误:

SELECT Sample.Number, Sample.SampleDate, BOD.BOD_Concentration_IN, BOD.BOD_Concentration_OUT, TSS.TSS_Influent, TSS.TSS_Effluent 
     FROM SampleInformation as Sample 
          INNER JOIN BOD_Data as BOD ON Sample.Number = BOD.Number 
          INNER JOIN TSS_Data as TSS ON Sample.Number = TSS.Number 
     WHERE (DATEPART('m',Sample.SampleDate) = DATEPART('m',#1/13/2016 12:01:00 PM#)) 
     AND (DATEPART('yyyy',Sample.SampleDate) = DATEPART('yyyy',#1/13/2016 12:01:00 PM#)) ORDER BY Sample.SampleDate

我去掉了“WHERE”子句,还是报错,所以一定是在join中。

谁能看到我在这里遗漏了什么?谢谢!

【问题讨论】:

  • ... 您可以使用以下内容: WHERE (MONTH(SampleDate) = MONTH(#1/13/2016 12:01:00 PM#)) AND (YEAR(SampleDate) = YEAR (#1/13/2016 12:01:00 PM#))
  • @WayneG.Dunn,您的评论看起来是正确的答案。如果您将其放在下方(作为答案),那么 OReilly 先生可以将此问题标记为“已回答”,其他 SO 用户将不会花时间在此问题上。

标签: sql excel ms-access vba


【解决方案1】:

我终于发现您在“FROM”子句周围缺少 ()...尝试以下操作:

顺便说一句,'数字'不需要括在括号中(虽然它是保留字)

SELECT Sample.Number, Sample.SampleDate, BOD.BOD_Concentration_IN, BOD.BOD_Concentration_OUT, TSS.TSS_Influent, TSS.TSS_Effluent 
 FROM (SampleInformation AS Sample 
       INNER JOIN BOD_Data AS BOD ON Sample.Number = BOD.Number) 
       INNER JOIN TSS_Data AS TSS ON Sample.Number = TSS.Number
 WHERE (DATEPART('m',Sample.SampleDate) = DATEPART('m',#1/13/2016 12:01:00 PM#)) 
 AND (DATEPART('yyyy',Sample.SampleDate) = DATEPART('yyyy',#1/13/2016 12:01:00 PM#)) ORDER BY Sample.SampleDate

【讨论】:

  • 韦恩,你很接近(请参阅你的答案中的编辑),你的原始帖子让我走上了正轨。谢谢!
  • 是的,您所做的正是我所做的……使用查询生成器创建正确的语法,然后添加条件。至于您的编辑,我拒绝了它,因为您现在唯一的区别是您将一些字段名称括在括号 [].... 我也确定这不会导致问题,所以我没有使用它们.很高兴它的工作!
  • 好吧,够公平的!感谢您的意见。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-18
  • 2013-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多