Получите ошибку в ASP.net, но отлично работает в Access - PullRequest
0 голосов
/ 20 сентября 2018
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 в доступе, он работает отлично.Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 21 сентября 2018

Возможно, вы используете Date в качестве имени столбца, который является зарезервированным ключевым словом для Access SQL (см. Ссылку здесь ).Вы можете изменить его на любое другое имя или использовать квадратные скобки, чтобы экранировать его как имя столбца:

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()).) для имени столбца и идентификаторов псевдонимов, насколько это возможно.

...