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'"; 

Активированный В является столбцом? то он должен был быть активирован или [активирован в]

Давайте будем гением компьютера.