Синтаксическая ошибка отсутствует операнд после оператора

Отсутствует операнд после оператора C# Решение и ответ на вопрос 2816666

Levv01

0 / 0 / 0

Регистрация: 19.04.2021

Сообщений: 1

1

Отсутствует операнд после оператора

19.04.2021, 13:52. Показов 3723. Ответов 2

Метки нет (Все метки)


Есть простое поле поиска и кнопка фильтрации, при нажатии на которую в DataGridView отображаются отфильтрованные данные

C#
1
 shopBindingSource.Filter = "Наименование товара LIKE '%" + textBox1.Text + "%' ";

Но при вводе данных в textBox1 и нажатии на кнопку, выдает сообщение : «Синтаксическая ошибка: отсутствует операнд после оператора «товара».»

Искал похожие проблемы, но ничего не нашел.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



mustbestronger

19 / 13 / 7

Регистрация: 05.04.2018

Сообщений: 50

19.04.2021, 15:25

2

Levv01

Добавьте оператор:

C#
1
shopBindingSource.Filter = "and Наименование товара LIKE '%" + textBox1.Text + "%' ";

Не используйте кириллицу при наименовании колонок или таблиц. Советую руководство по стилю https://www.sqlstyle.guide/ru/



0



0 / 0 / 0

Регистрация: 19.05.2022

Сообщений: 5

22.05.2022, 17:59

3

Наверное уже не актуально, но возможно это кому-то поможет:

Для фильтрации я использовал строчку
архивBindingSource.Filter = string.Format(«{0}='{1}'», comboBox6.Text, textBox1.Text);

Где комбобокс содержал названия колонок, а в текстбокс вводились данные.

Появилась точно такая же ошибка как и у вас. Решил очень просто -> поместил {0} в квадратные скобки и получилось вот это:

архивBindingSource.Filter = string.Format(«[{0}]='{1}'», comboBox6.Text, textBox1.Text);

Фильтрация заработала без ошибок!



0



This is the code I have:

private void btnSearch_Click(object sender, RoutedEventArgs e)
{

        using (SqlConnection sc = new SqlConnection(sConn))
        {
            sc.Open();


            string SearchFor = txtSearch.Text;



            using (SqlDataAdapter adapter = new SqlDataAdapter())
            {
                DataTable dt = new DataTable();
                grdData.ItemsSource = dt.DefaultView.RowFilter = string.Concat("SELECT * FROM Student WHERE Forename LIKE '%", SearchFor, "%'");
            }

When I run the code I get:

«Syntax error: Missing operand after ‘Student’ operator.»

I’m using WPF… I want it so I can search for people by just typing a letter of their name what can I do?

asked Jul 16, 2014 at 10:28

BenNixon's user avatar

BenNixonBenNixon

71 gold badge2 silver badges6 bronze badges

2

You need to fill your DataTable first with some data and then you can filter results

using (SqlConnection sc = new SqlConnection(sConn))
{
   sc.Open();
   using (SqlDataAdapter adapter = new SqlDataAdapter())
   {
       adapter.SelectCommand = new SqlCommand("SELECT * FROM Student", sc);
       var dataset = new DataSet();
       adapter.Fill(dataset);
       var dt = dataset.Tables[0];
       var dv = dt.DefaultView;
       dv.RowFilter = String.Concat("[Forename] LIKE '%", SearchFor, "%'");
       grdData.ItemsSource = dv;
   }
}

or filter in SQL without RowFilter

var cmd = new SqlCommand("SELECT * FROM Student WHERE Forename LIKE @forename", sc);
cmd.Parameters.AddWithValue("@forename", String.Concat("%", SearchFor, "%"));
adapter.SelectCommand = cmd;

answered Jul 16, 2014 at 10:55

dkozl's user avatar

dkozldkozl

32.5k8 gold badges88 silver badges89 bronze badges

0

In your filter, you only need to specify the WHERE clause, it’s not a full SQL SELECT statement that is needed. So it should look like this:

grdData.ItemsSource = dt.DefaultView.RowFilter = string.Concat("Forename LIKE '%", SearchFor, "%'");

Be aware though, that a user could enter some characters like %, ' etc.

answered Jul 16, 2014 at 10:35

DavidG's user avatar

DavidGDavidG

110k12 gold badges215 silver badges213 bronze badges

please change as below..

dt.DefaultView.RowFilter ="Forename LIKE '%" + SearchFor + "%'"

answered Jul 16, 2014 at 10:35

Ashok Rathod's user avatar

2

The «RowFilter» query is not a complete SQL query but rather a subset of a SQL query.
In your case you want something like:

grdData.ItemsSource = dt.DefaultView.RowFilter = String.Format("[Forename] LIKE '%{0}%'", SearchFor);

For future reference: MSDN Documentation.

answered Jul 16, 2014 at 10:36

jpsfs's user avatar

jpsfsjpsfs

7082 gold badges6 silver badges24 bronze badges

2

Вопрос:

У меня есть эта строка кода, которая использует dataview view_1, и я пытаюсь отфильтровать datagridview по product_name и его размер с помощью RowFilter.
Вот код:

view_1.RowFilter = "product_name = '" + cboProduct.Text + "' AND size = " + cboSize.Text + "";

И когда я пытаюсь запустить приложение, он говорит Missing operand after '=' operator.
Итак, что это за недостающий операнд?

Лучший ответ:

Я не знаю, что не так. Сначала я попытался отфильтровать, если текст cboProduct и cboSize пуст, или если выбор не был сделан, и теперь он работает. Спасибо.
Вот код

if (cboProduct.Text == string.Empty || cboProduct.SelectedIndex == -1 || cboSize.Text == string.Empty || cboSize.SelectedIndex == -1)
            {
                view_1.RowFilter = string.Empty;
            }
            else
            {
                view_1.RowFilter = "product_name = '" + cboProduct.Text + "' AND size = " + cboSize.Text + "";
            }

Ответ №1

У вас отсутствует пробел в 'AND

Итак, замените

'AND

с

' AND

Забастовкa >

Является ли размер строковым столбцом или int-column? Если это строка, вам также нужны кавычки:

AND size = '" + cboSize.Text + "'";

или даже лучше, используйте String.Format, как прокомментировали другие, так как он улучшает читаемость:

view_1.RowFilter = string.Format("product_name = '{0}' AND size = '{1}'"
, cboProduct.Text
, cboSize.Text);

Ответ №2

Напиши так

view_1.RowFilter = "product_name = '" + cboProduct.Text + "' AND size = " + cboSize.Text + "";

Отсутствует проблема белого пространства

Edit

Вы также можете использовать string.Format

view_1.RowFilter =  String.Format("product_name = '{0}' AND size = {1}", cboProduct.Text,cboSize.Text);

Ответ №3

Если переменная product_name имеет значение, содержащее пробел, тогда значение должно быть заключено в квадратные скобки в выражении фильтра:
Итак, просто оберните переменную product_name парой квадратных скобок, подобной этой
[product_name]

view_1.RowFilter = "[product_name] = '" + cboProduct.Text + "' AND size = " +
cboSize.Text + "";

5 ответов

Проблема — «Dyn’s». Можете ли вы использовать «вместо», возникает проблема

Serkan Hekimoglu
09 июль 2010, в 05:48

Поделиться

Это апостроф в имени, вам нужно его избежать:

DataRow[] rowList = resultDt.Select(string.Format(" [{0}] = '{1}'", resultDt.Columns["Company"], "Dyn's"))

Проблема заключается в том, что она заменяется на {1}, и поэтому полученная строка выглядит как 'Dyn's', и при ее выходе вы попадаете в 'Dyn's', которая должна быть в порядке.

Mark Elliot
09 июль 2010, в 06:53

Поделиться

Dyn's

Вам нужно избежать апострофа:

Dyn's

Winston Smith
09 июль 2010, в 06:49

Поделиться

Попробуйте экранировать ‘:

"Dyn's"

gauteh
09 июль 2010, в 05:29

Поделиться

Можно ли использовать LINQ для DataTable? Я всегда думал, что DataTable.Select() — это способ, способный совершить ошибку, именно для такого рода причин.

Выполнение запроса с использованием LINQ to Objects (эффективно) с помощью метода DataTableExtensions.AsEnumerable() (или, проще говоря, с использованием строго типизированных наборов данных, IIRC), является более приятным IMO. По общему признанию, вы не сможете воспользоваться какой-либо индексацией в памяти, выполняемой DataTable, но я подозреваю, что в большинстве случаев это будет неактуально.

Jon Skeet
09 июль 2010, в 06:53

Поделиться

Ещё вопросы

  • 0Удалить вызывает ошибку памяти с виртуальным деструктором в базовом классе
  • 1как правильно использовать clearInterval ()?
  • 1Объект не сохраняется с использованием JPA / JTA / JBOSS / CDI
  • 1Что означает параметр `int` в` map` Python 3?
  • 1Почему оценщик TensorFlow не может сделать это простое предсказание линейной регрессии
  • 0Служба AngularJS PUT в плоский файл JSON
  • 0HTML / CSS страница входа проблемы со стилем в IE не работает
  • 1Панды — как изменить ячейку в соответствии со средним числом следующих 10 клеток
  • 0Селектор элементов списка без элемента с определенным классом
  • 1Синхронизировать две галереи
  • 1Импорт файлов из веб-пакета без расширения некорректно изменяется в HMR (горячая замена модуля)
  • 1Диаграмма JS показывает старые данные диаграммы при наведении
  • 1D3 js длина ссылки между узлами изображения
  • 0Jquery заменить не работает
  • 1Как мне сообщить Джерси, где находится мой MessageBodyWriter?
  • 1Заставить кнопку распознавать текст в JTextField
  • 1Десериализация DateTime из C # CLR
  • 1Состояние многопоточности Java
  • 0фокус: всегда выше классов
  • 1Как выбрать рамки данных, которые имеют только 6 столбцов из списка
  • 0Вычитая время для публикации сколько минут назад
  • 0Получение Radius из MySQL в PHP
  • 1android — ошибка несовместимости платформы и несовместимости пакета при установке приложения на телефон
  • 0Как двустороннее связывание localStorageService в AngularJs?
  • 0PHP возвращает массив
  • 1Передать массив в requirejs shim
  • 0Ошибка «_http_outgoing.js: 335» при отправке ответа API от бэкэнда во внешний интерфейс
  • 0Могу ли я использовать функцию eval в этом случае?
  • 1Плагин для другого приложения для Android
  • 1Класс C # Деинициализация динамической памяти
  • 0В чем практическая разница между этими двумя методами jQuery
  • 0Является ли angularJS хорошим выбором, если я хочу, чтобы мой веб-сайт также использовался на телефонах?
  • 0Сбой алгоритма сортировки кучи C ++ после 4100+ записей данных?
  • 0Как получить сумму записей в ключе, значение моды, используя nativeQuery в CrudRepository?
  • 1Свойство ‘do’ не существует для типа ‘Подписка’
  • 0Конвертировать файл docx из Gmail в HTML
  • 0C ++ tron AI застрял в своем собственном следе
  • 1Как добавить файл системных разрешений / системную библиотеку в Android
  • 1Android 2.1 / 2.2 Bluetooth последовательное соединение с настольным компьютером
  • 1Репозиторий, который зависит от идентификатора аккаунта — это хороший подход?
  • 1Как создать Android WifiConfiguration и получить доступ к Wi-Fi с помощью имени пользователя / пароля
  • 1преобразование outputStream в байтовый массив [duplicate]
  • 0Отображение один-ко-многим без дубликатов
  • 0PHP Как рассчитать уровень вложенных вызовов в рекурсивной функции?
  • 1Android: HTML-ссылки внутри ListView — проблема с подсветкой
  • 0Наверное, очень просто — получить три контейнера рядом друг с другом?
  • 1Красноречивая печать «времени между» двумя отпечатками времени
  • 0Постоянное изменение текста HTML с помощью модальной формы пользовательского интерфейса jQuery
  • 0Как я могу объединить две несвязанные таблицы MySQL и использовать группу по дате
  • 1Как написать TreeMap для этой программы?

Понравилась статья? Поделить с друзьями:
  • Синий экран ошибка system thread exception not handled
  • Синтаксическая ошибка отсутствие перед тип
  • Синий экран смерти расшифровка ошибок
  • Синтаксическая ошибка определение
  • Синий экран ошибка stopcode