运行时错误-2147217904(80040e10)

时间:2015-08-20 13:34:44

标签: sql vba

我有交易表,在表格中我有DOT(交易日期)字段。我希望在特定年份获得特定月份的交易,无论哪一天。所以这个查询尝试了。

>>>  SQL = "SELECT * FROM Transactions
WHERE DATEPART(MM, (SELECT DOT FROM Transactions))= " & Month(Date) & " 
AND DATEPART(YY, (SELECT DOT FROM Transactions))= " & Year(Date) & ""

但是我在rs.Open SQL, cnn显示自动化错误和错误。

其中rs是记录集对象,cnn连接对象。

2 个答案:

答案 0 :(得分:1)

当你可以直接从Transactions表中访问该字段时,我不确定为什么你会涉及子查询。

sql = "SELECT * FROM Transactions t " & _
      "WHERE DATEPART(mm, t.[DOT])=MONTH(getdate())" & _
      " AND DATEPART(yy, t.[DOT])=YEAR(getdate());"

鉴于MS SQL的T-SQL有自己的MONTH,YEAR和getdate(),在发送SQL语句之前没有理由构造这些参数。

如果以上内容对您不起作用,则必须提供Transactions表所在的数据库父级。如[MyDB] .dbo。[Transactions]。尝试服务器上的语句。

答案 1 :(得分:0)

完美的查询如下:

SQL = "SELECT * FROM Transactions t WHERE DATEPART('m', t.[DOT])= MONTH(DATE()) " & _ 
      "AND DATEPART('yyyy', t.[DOT])= YEAR(DATE())"