Levv01 0 / 0 / 0 Регистрация: 19.04.2021 Сообщений: 1 |
||||
1 |
||||
Отсутствует операнд после оператора19.04.2021, 13:52. Показов 3723. Ответов 2 Метки нет (Все метки)
Есть простое поле поиска и кнопка фильтрации, при нажатии на которую в DataGridView отображаются отфильтрованные данные
Но при вводе данных в textBox1 и нажатии на кнопку, выдает сообщение : «Синтаксическая ошибка: отсутствует операнд после оператора «товара».» Искал похожие проблемы, но ничего не нашел.
__________________
0 |
mustbestronger 19 / 13 / 7 Регистрация: 05.04.2018 Сообщений: 50 |
||||
19.04.2021, 15:25 |
2 |
|||
Levv01 Добавьте оператор:
Не используйте кириллицу при наименовании колонок или таблиц. Советую руководство по стилю https://www.sqlstyle.guide/ru/
0 |
0 / 0 / 0 Регистрация: 19.05.2022 Сообщений: 5 |
|
22.05.2022, 17:59 |
3 |
Наверное уже не актуально, но возможно это кому-то поможет: Для фильтрации я использовал строчку Где комбобокс содержал названия колонок, а в текстбокс вводились данные. Появилась точно такая же ошибка как и у вас. Решил очень просто -> поместил {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
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
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
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
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
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 для этой программы?