|
Levv01 0 / 0 / 0 Регистрация: 19.04.2021 Сообщений: 1 |
||||
|
1 |
||||
Отсутствует операнд после оператора19.04.2021, 13:52. Показов 3569. Ответов 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 |
I am filtering my gridview using dataview. I am passing the filter command to dataview as mentioned below;
string strFilter= " 0=0 ";
if (Session["SampleSession"] != null)
{
strFilter= strFilter+ " and Emp Name = '" + Session["SampleSession"].ToString() + "' ";
}
dv.RowFilter = strFilter; // Throws an error here!
It throws an error of Missing operand after ‘Operator Name’ operator in above line.
i believe there is small error which i am unable to catch.
Matt Hamilton
198k61 gold badges384 silver badges318 bronze badges
asked Aug 8, 2011 at 5:43
14
Your problem is that «Emp Name» (the column name) contains a space and needs to be wrapped in square brackets in the filter expression:
strFilter= strFilter+ " and [Emp Name] = '" + Session["SampleSession"].ToString() + "' ";
answered Aug 8, 2011 at 8:50
Matt HamiltonMatt Hamilton
198k61 gold badges384 silver badges318 bronze badges
1
I am filtering my gridview using dataview. I am passing the filter command to dataview as mentioned below;
string strFilter= " 0=0 ";
if (Session["SampleSession"] != null)
{
strFilter= strFilter+ " and Emp Name = '" + Session["SampleSession"].ToString() + "' ";
}
dv.RowFilter = strFilter; // Throws an error here!
It throws an error of Missing operand after ‘Operator Name’ operator in above line.
i believe there is small error which i am unable to catch.
Matt Hamilton
198k61 gold badges384 silver badges318 bronze badges
asked Aug 8, 2011 at 5:43
14
Your problem is that «Emp Name» (the column name) contains a space and needs to be wrapped in square brackets in the filter expression:
strFilter= strFilter+ " and [Emp Name] = '" + Session["SampleSession"].ToString() + "' ";
answered Aug 8, 2011 at 8:50
Matt HamiltonMatt Hamilton
198k61 gold badges384 silver badges318 bronze badges
1
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.4k8 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 badges212 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
У меня есть другая перспектива ответить на это.
При работе на разных уровнях, например, в приложении MVC, контроллеру нужны службы для вызова бизнес-операций. В таких сценариях контейнер инжекции зависимостей может использоваться для инициализации служб, чтобы исключить исключение NullReferenceException. Это означает, что вам не нужно беспокоиться о проверке нулевого значения и просто вызвать службы с контроллера, как будто они всегда будут доступны (и инициализированы) как одиночный или прототип.
public class MyController
{
private ServiceA serviceA;
private ServiceB serviceB;
public MyController(ServiceA serviceA, ServiceB serviceB)
{
this.serviceA = serviceA;
this.serviceB = serviceB;
}
public void MyMethod()
{
// We don't need to check null because the dependency injection container
// injects it, provided you took care of bootstrapping it.
var someObject = serviceA.DoThis();
}
}
задан Matt Hamilton 8 August 2011 в 09:49
поделиться
Вопрос:
У меня есть эта строка кода, которая использует 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 + "";
Новичок
Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.12.2013
Репутация: нет
Всего: нет
Работаю с базой данных access, нужно сделать выборку например при вводе в eParam1 числа в зависимости от того что стоит в Cusl — < > >= итд выбирать соответственно столбики, выбирать по столбцу «код экскурсии
но при вводе какого либо числа вылазит ошибка:
A first chance exception of type ‘System.Data.SyntaxErrorException’ occurred in System.Data.dll
Additional information: Синтаксическая ошибка: отсутствует операнд после оператора «экскурсии».
Код:
if (cUsl.Text == «» || eParam1.Text == «»)
return;
{
tZaprosBindingSource.Filter = «»;
}
if (cUsl.Text == «» || eParam1.Text == «»)
{
MessageBox.Show(«Не заполнены все поля! «, «Ошибка», MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
{
tZaprosBindingSource.Filter = «код экскурсии»+ cUsl.Text + » » + eParam1.Text; <===пишет что вот тут ошибка
Это сообщение отредактировал(а) Amstei — 9.12.2013, 15:04
Присоединённый файл ( Кол-во скачиваний: 0 )

Создание_параметрических_запросов.rar 355,53 Kb
У меня есть таблица данных, и я хочу отфильтровать эту таблицу по названию компании. Но это дало эту ошибку:
Синтаксическая ошибка: после оператора s отсутствует операнд.
Мой код такой:
DataRow[] rowList = resultDt.Select(string.Format(" [{0}] = '{1}'", resultDt.Columns["Company"], "Dyn's"));
В чем проблема?
5 ответы
Проблема в «Dyn's«. Вы можете использовать ' вместо '? Этот апостроф является причиной возникновения проблемы.
Создан 11 сен.
Это апостроф в имени, вам нужно его избежать:
DataRow[] rowList = resultDt.Select(string.Format(" [{0}] = '{1}'", resultDt.Columns["Company"], "Dyn's"))
Проблема в том, что его заменяют {1} и поэтому результирующая строка выглядит как 'Dyn's', убегая от него, вы попадаете в 'Dyn's' что должно быть в порядке.
Создан 09 июля ’10, 09:07
Dyn's
Вам нужно избежать апострофа:
Dyn's
Создан 09 июля ’10, 09:07
Попробуйте убежать ‘:
"Dyn's"
Создан 09 июля ’10, 09:07
Можете ли вы использовать вместо этого LINQ to DataTable? Я всегда думал, что DataTable.Select() это способ делать что-то подверженный ошибкам, именно по этой причине.
Запросы с использованием LINQ to Objects (эффективно) через DataTableExtensions.AsEnumerable() метод (или, проще говоря, с использованием строго типизированных наборов данных, IIRC) лучше IMO. По общему признанию, вы не получите никакой выгоды от индексации в памяти, выполняемой DataTable, но я подозреваю, что в большинстве случаев это не имеет значения.
Создан 09 июля ’10, 09:07
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
c#
datatable
or задайте свой вопрос.
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
Поделиться
Ещё вопросы
- 1Python: При поиске продукта большого массива, как лучше всего уменьшить ошибку с плавающей запятой?
- 1Javascript — Как сохранить проанализированную строку запроса в куки
- 0Как обновить страницу / представление в угловом виде с другой?
- 0Удаление переменных из этого SQL-запроса (Справка по подзапросам)
- 1Android — получение исключения
- 1Java: Лучшая практика для определения метода по отношению к классу
- 1Как удалить определенные строки из 2D-массива, если элемент в этой строке не удовлетворяет определенным условиям?
- 1Python REGEX принимает дополнительные символы
- 3Не могу получить Pyperclip использовать модули копирования и вставки на Python3
- 0Завершено ли std :: string символом ‘/ 0’? [Дубликат]
- 1Как бы я рефакторинг этой строки кода в C #?
- 1Почему запрос не возвращает никакого результата, если таблица заполнена данными?
- 0Как умножить 2 таблицы / списка в MySQL?
- 1Вложенная панель обновления, вызывающая обновление родительской панели обновления
- 0JQuery — Что я делаю не так?
- 1JSF 2.2 и Spring 4 и CDI на разных уровнях без потери функций Spring
- 1пример часового пояса не работает в эмуляторе
- 0PHP в JavaScript для выпадающего меню
- 0Jquery Draggable — Как сделать, чтобы перетаскиваемый элемент привязывался с шагом в пиксели
- 0Декодирование с помощью Qt изображения, закодированного с помощью класса Java ImageIO
- 0Извлечь текстовое содержимое HTML в массив PHP [duplicate]
- 0почему программа javascript не запускается
- 0Настраиваемый в Magento товарный запас облажался после заказа (кол-во ошибок)
- 1Конвертировать точки Тип данных vtkUnstructuredGrid
- 1Стилизованный фон, используемый в макете прозрачного PopupWindow, не работает
- 0Как использовать протокол TLS на cURL?
- 1Установка Dr. Edit ошибка
- 0JQuery AJAX, возвращающий отправку страницы HTML
- 0MFC Serialize двусвязный список
- 1Android: Помогите создать кнопку, которая дает тот же результат, что и нажатие клавиши D на D-Pad? (часть 2)
- 0Отображение таблицы в таблице по клику
- 0Отображение вида в виде лайтбокса в приложении бритвы
- 0Фонд раскрывает не распознает модальную ссылку
- 0Обнаружение щелчка мышью в MFC / OLE
- 1Регулярное выражение для соответствия средней строке внутри необязательного пробела
- 1Как преобразовать коллекцию элементов в «Текущий выбор» в Revit?
- 0C128 скрипт в php
- 1Как получить имя атрибута и значение Elemnt с помощью XDocument
- 1Безсерверный локальный сервер WSGI работает медленно
- 0Mysql сгруппировать по column1, column2 «Desc | asc» без ошибок
- 1Темы и производительность с играми для Android
- 0Jquery с многоуровневым массивом данных JSON
- 0Триггерный элемент ввода файла с пунктом меню
- 1Получить message_id из сообщения Telegram — node.js
- 1Словарь groupby visitdate и свойство IsChecked C #
- 0угловой UI-роутер — открыть модальный диалог
- 0Jquery заменить не работает
- 0Не могу как вращать, так и переводить мою сцену — direct3d
- 0Как связать эти эффекты в JQuery? Очередь? Обещают?
- 0Как я могу использовать функции apcu apc_store (), apc_fetch () в PHPNG / PHP7?
Всем доброго дня!
Ребят, такая проблема. На форме есть dataGridView, которая привязана к данным:
dataGridView.DataSource = Table1.
Сама таблица заполняется с помощью адаптера методом Fill(). С этим все норм.
Пытаюсь поставить фильтр на столбец с помощью DefaultView.RowFilter:
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("{0} like '%{1}%'", ColName, TextBox1.Text);
где ColName — столбец со строковыми значениями. Все работает отлично.
Но есть столбец с датами, к примеру ColNameDate, и я хочу поставить такой же фильтр, но при этом дату сразу приводить к текстовому формату с помощью функции to_char(timestamp, ‘DD.MM.YYYY’) (работаю с PostgreSQL):
(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("to_char({0}, 'DD.MM.YYYY') LIKE '%{1}%'", ColNameDate, TextBox1.Text);
При выполнение выдает ошибку: «Выражение содержит вызов не определенной фукнции to_char()».
Пробовал взять всю эту функцию в одинарные кавычки:
string.Format("'to_char({0}, 'DD.MM.YYYY')' ...
но теперь выдает ошибку: «Синтаксическая ошибка: отсутствует операнд после оператора «YYYY»»
Если кто сталкивался, подскажите, пожалуйста в чем может быть проблема. Такой запрос в самом PostgreSQL выполняется корректно.
Андрей