111 / 111 / 5
Регистрация: 14.01.2011
Сообщений: 130
|
|||||||||||
1 | |||||||||||
Фильтрация данных в БД по нескольким полям (TextBox, SQL)21.04.2011, 17:49. Показов 13373. Ответов 17
Метки нет (Все метки)
Всем привет.
Имеется приложение, допустим, телефонная книга. В нем несколько текстовых полей (см. скриншот): Осуществлено подключение к БД, данные отображаются в гриде. Задача: Осуществить фильтрацию по различным полям, если пользователь ввел соответсвующие данные в текстовые поля. На данный момент, я написал такой запрос:
Пробовал без строки "OR [Какое-то поле] IS NULL". Запрос, вопреки ожиданиям не возвращает данных. Подскажите как быть, как осуществляется такая фильтрация? P.S. Как говорится, не хотел "городить огород" по типу:
Заранее спасибо всем ответившим.
0
|
21.04.2011, 17:49 | |
Ответы с готовыми решениями:
17
Фильтрация данных по нескольким полям Фильтрация в БД по нескольким полям Фильтрация по нескольким полям Фильтрация по нескольким полям |
111 / 111 / 5
Регистрация: 14.01.2011
Сообщений: 130
|
|
22.04.2011, 16:37 [ТС] | 2 |
Может быть не через SQL делать, а через LINQ?
P.S. Неужели никто не реализовывал такую фильтрацию?
0
|
111 / 111 / 5
Регистрация: 14.01.2011
Сообщений: 130
|
|
22.04.2011, 18:53 [ТС] | 4 |
Eugene22, нет к сожалению - не работает.
Пробовал по-разному. Жесткое "=" точно не работает. Если писать выражения с маской "%" то тогда возможен показ не всех строк. В БД имеются столбцы со значением NULL... Вопрос даже не в том, как переделать этот запрос, а как в принципе должно все быть.
0
|
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
|
||||||
22.04.2011, 19:06 | 5 | |||||
Вроде бы должно работать, а что в качестве базы используется?
ну вот я у себя использовал такой код
1
|
111 / 111 / 5
Регистрация: 14.01.2011
Сообщений: 130
|
||||||
22.04.2011, 19:22 [ТС] | 6 | |||||
В качестве базы Access.
Создаю DataSet, заполняю его через DataAdapter. В качестве запроса в Access передаю вот ту строку. Добавлено через 12 минут Eugene22, проблема в том, что некоторые поля могут оказаться незаполненными и поэтому выпадет исключение... Вот смотри, как работает этот запрос. Ввел, допустим, я в поле "фамилия" - текст, остальные поля пустые. Мой запрос:
Если я не пропишу в запросе, скажем, "OR [Фамилия] IS NULL", то запрос не вернет результатов, и будет вообще неадекватно вести себя, натыкаясь на NULL
0
|
111 / 111 / 5
Регистрация: 14.01.2011
Сообщений: 130
|
||||||
22.04.2011, 19:27 [ТС] | 7 | |||||
Запрос типа:
0
|
111 / 111 / 5
Регистрация: 14.01.2011
Сообщений: 130
|
|
28.04.2011, 18:04 [ТС] | 8 |
Неужели никто не сталкивался с подобным? Или это секрет?
0
|
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
|
|
28.04.2011, 19:31 | 9 |
А что, обязательно фильтровать прям вот по всем полям, какие есть?
Встречный вопрос. Конструкция LIKE разве работает без маски? Ведь если не использовать "%", смысл самого LIKE? ___________________ Другой момент. Если все уперлось в Null, может при вводе данных в незаполненных полях ставить пробел или прочерк?
1
|
111 / 111 / 5
Регистрация: 14.01.2011
Сообщений: 130
|
|
28.04.2011, 19:41 [ТС] | 10 |
Памирыч, да ты прав
Сегодня после недолгих экспериментов понял, что основная моя проблема - это значения NULL, на которые натыкается запрос. Выхода, предполагаю, 2: либо "конвертировать" значения NULL в что-либо еще, либо вручную в БД поставить - как ты предложил - какой-л. символ. Да, LIKE не имеет большого значения без подстановочных символов.
0
|
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
|
|
28.04.2011, 20:46 | 11 |
Сейчас создал проект и базу, все это опробовал.
Если нет какого-то критерия, например, номера телефона, то этот человек вовсе не попадает в фильтр, все как ты и говорил. Я конечно влепил туда дефисы, но это не дело. Ведь может случиться так, что телефон появился, пользователь стирает прочерк и готовится записать номер, но тут звонит телефон и ему сообщают что он больше в этой организации не работает. Он оставляет поле пустым и закрывает программу, сохранив пустоту в ячейке. Я к тому, что надо будет или поставить в программу какой то контроль на нули, либо пересматривать фильтрацию.
1
|
111 / 111 / 5
Регистрация: 14.01.2011
Сообщений: 130
|
|
29.04.2011, 16:55 [ТС] | 12 |
Да... походу придется пересматривать подход к фильтрации...
Порывшись в инете - я так и не нашел решения. Подумаю еще, может быть что-нибудь "этакое" сворганю... P.S. Еще раз спасибо всем за ответы.
0
|
111 / 111 / 5
Регистрация: 14.01.2011
Сообщений: 130
|
||||||
06.05.2011, 15:37 [ТС] | 13 | |||||
Я все-таки нашел ответ на свой вопрос.
Кому интересно, запрос теперь будет выглядеть так:
1
|
2 / 2 / 0
Регистрация: 21.03.2012
Сообщений: 44
|
||||||
27.03.2012, 07:53 | 14 | |||||
0
|
Chups0809
|
|
17.07.2012, 11:38 | 15 |
На мой взгляд конструкцию "OR [Какое-то поле] IS NULL" надо везде менять на "OR [Какое-то поле] IS NOT NULL". В общем меняй все IS NULL на IS NOT NULL и будет тебе счастье!
|
0 / 0 / 0
Регистрация: 16.09.2015
Сообщений: 2
|
|
05.08.2012, 11:13 | 16 |
А можно ли этот отрывок запроса перевести в linq в vb.net. я столкнулся с подобной проблемой но я пишу на linq используя datacontext. пытался найти конвертеры но они либо платные либо слишком замудренные. Прошу помочь. Заранее спасибо
0
|
0 / 0 / 0
Регистрация: 01.05.2015
Сообщений: 1
|
||||||
07.01.2018, 12:28 | 17 | |||||
Пример поиска оборудования по одному или нескольким параметрам.
WinForm + ACCESS
0
|
1136 / 881 / 152
Регистрация: 25.07.2015
Сообщений: 1,959
|
|
07.01.2018, 17:58 | 18 |
Galactus, жесть : тема почти 6-летней давности + скрипт на Шарпе на форуме VB.NET.
Это ж на до так было заморочиться НГ + Рождество видимо удались.....
1
|
07.01.2018, 17:58 | |
07.01.2018, 17:58 | |
Помогаю со студенческими работами здесь
18
Windows Form и база данных Sql фильтрация по нескольким столбцам Фильтрация грида по нескольким полям одновременно Фильтрация по нескольким полям как в интернет магазинах Фильтрация по нескольким полям разделенной формы Access 2007 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |