sql = "SELECT distinct Switch( Month(Date) = 1,'January' ) AS Month, SUM([Actual Values]) FROM Mytable group by Month(Date) having Month(Date) < Month(Now()) AND Month(Date) > Month(Now()) - 4";
connection = new OleDbConnection(connetionString);
connection.Open();
oledbAdapter = new OleDbDataAdapter(sql, connection);
oledbAdapter.Fill(ds);
错误: SELECT语句包含一个保留字或一个拼写错误或丢失的参数名称,或者标点符号不正确。这是什么意思,我该如何解决?如果将鼠标悬停在sql变量上方,并在调试时获取sql并在访问中运行相同的sql,则效果很好。 有人可以帮忙吗?
答案 0 :(得分:0)
可能您使用Date
作为列名,这是Access SQL的保留关键字(请参见参考文献here)。您可以选择将其更改为其他任何名称,也可以使用方括号将其作为列名进行转义:
sql = "SELECT DISTINCT Switch(MONTH([Date]) = 1, 'January') AS Month, SUM([Actual Values])
FROM Mytable
GROUP BY Month([Date])
HAVING Month([Date]) < Month(Now()) AND Month([Date]) > (Month(Now()) - 4)";
注意:请避免为列名和别名标识符使用保留的关键字和函数名(例如MONTH()
)。