Sql Query Help, синтаксическая ошибка около =
почему это не работает? Это что-то вроде синтаксиса commandstring near =
но я не могу понять, что онлайн-примеры кажутся точно такими же. Edit: Activated In – это столбец.
примеры из Как выбрать данные из базы данных со многими параметрами фильтра?
private void btnDist_Click(object sender, EventArgs e) { string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated In = '#NA'"; SqlDataAdapter adapter = new SqlDataAdapter(cmdText, GetConnection()); DataSet distDS = new DataSet(); adapter.Fill(distDS); dataGridView1.DataSource = distDS.Tables[0].DefaultView; }
Если имя столбца в вашей базе данных Activated In
(с пробелом), тогда вам нужно использовать квадратные скобки при обращении к имени объекта / столбца в запросах, например:
SELECT * FROM Inventory WHERE Rep <> '#NA' AND [Activated In] = '#NA'
Это связано с тем, что SQL обрабатывает пробелы как разделители в языке запросов – квадратные скобки используются для «escape» этого (и других символов) в именах.
В качестве альтернативы, если столбец называется Activated
вам не нужен бит IN
– либо тест для равенства, либо тест, чтобы узнать, находится ли значение в заданном диапазоне, но не выполняйте оба.
-- Use this SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated = '#NA' -- Or this SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated IN ('#NA', 'Some other value')
измените запрос на Не нужно ключевое слово IN
SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated = '#NA'"
IN
– используется, когда вы хотите отфильтровать данные из списка или подзапроса.
Ключевое слово In
используется следующим образом:
...AND Activated IN ('#NA') ...AND Activated IN ('#NA', 'other filter value', 'more filter values')
Activated In = '#NA'"
Это должно быть Activated In ('#NA')"
или Activated = '#NA'"
.
Оператор In
в SQL зарезервирован.
Удалите =
после In
string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated In ('#NA')";
Вы также можете использовать =
вместо In
поскольку вы указываете только один элемент.
string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND Activated = '#NA'";
Если « Activated In
– это столбец, используйте:
string cmdText = "SELECT * FROM Inventory WHERE Rep <> '#NA' AND [Activated In] = '#NA'";
Активированный В является столбцом? то он должен был быть активирован или [активирован в]