Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
3 / 3 / 0
Регистрация: 21.05.2016
Сообщений: 304

Фильтрация DbGrid: игнорировать пустые части фильтров

07.07.2016, 14:22. Показов 3263. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте. можете помочь с кодам ?
Delphi
1
2
ADOQuery1.Filter := 'monawile= '''+edit39.Text +''' and  procenti = '''+Edit47.Text+''' and  valuta_fsoni = '''+Edit48.Text+'''';
  ADOQuery1.Filtered := True;
хочу чтоб при фильтрации пустые эдит игнорировал, и фильтровал толка со значениями заполненных edit.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.07.2016, 14:22
Ответы с готовыми решениями:

Фильтрация данных в ADOQuery выводит пустые строки
Как сделать фильтрацию данных в ADOQuery пишу такое выводит пустые строки... ADOQuery.Filtered:=true; ADOQuery.Filter:='Class =...

Выводит пустые строки в DBGrid
Привет всем снова) Есть проблема. В одном DBGrid выводится таблица, во второй DBGrid выводится информация по каждой строке (т.е. в первом...

Скрыть пустые столбцы в dbgrid
Всем привет) Подскажите, как можно скрыть пустые столбцы в dbgrid? делаю так: if DT2.ADOQuery4.RecordCount<>0 then for b := 0...

39
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
10.07.2016, 22:09
Студворк — интернет-сервис помощи студентам
Судя по структуре таблицы БД, конструирование фильтра, предложенное Hikari должно работать.
Только надо убрать кавычки в строке 5:
Delphi
1
2
3
...
If Edit47.Text<>'' then  Filter := Filter + ' AND procenti = '+Edit47.Text;
...
Если фильтр не будет работать, значит проблема может быть в каком-нибудь значении Едита, которое не корректно.
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,607
11.07.2016, 17:36
Цитата Сообщение от Скандербег Посмотреть сообщение
3
...
If Edit47.Text<>'' then
Если пользователь нажал случайно пробел потом что ?
0
3 / 3 / 0
Регистрация: 21.05.2016
Сообщений: 304
12.07.2016, 20:02  [ТС]
Скандербег, вот этот код работает нормально

Delphi
1
2
3
4
5
6
7
8
9
10
11
If (Edit39.Text<>'') and (Edit47.Text<>'') and (Edit48.Text<>'') then
     begin
    ADOQuery1.Filter := 'monawile= '''+edit39.Text +''' and  procenti = '''+Edit47.Text+''' and  valuta_fsoni = '''+Edit48.Text+'''';
     end;
   If Edit48.Text='' then  ADOQuery1.Filter := 'monawile= '''+edit39.Text +''' and  procenti = '''+Edit47.Text+'''';
   If Edit47.Text='' then  ADOQuery1.Filter := 'monawile= '''+edit39.Text +''' and  valuta_fsoni = '''+Edit48.Text+'''';
   If Edit39.Text='' then  ADOQuery1.Filter := 'procenti = '''+Edit47.Text+''' and  valuta_fsoni = '''+Edit48.Text+'''';
   If (Edit39.Text='') and (Edit47.Text='')then ADOQuery1.Filter := 'valuta_fsoni = '''+Edit48.Text+'''';
   If (Edit39.Text='') and (Edit48.Text='')then ADOQuery1.Filter := 'procenti = '''+Edit47.Text+'''';
   If (Edit47.Text='') and (Edit48.Text='')then ADOQuery1.Filter := 'monawile = '''+Edit39.Text+'''';
    ADOQuery1.Filtered := True;
кавычки убрал но тоже самое.
xxbesoxx,
Цитата Сообщение от xxbesoxx Посмотреть сообщение
Если пользователь нажал случайно пробел потом что ?
вeти edit -и programa вставляет значение
0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
12.07.2016, 20:29
Кхм... Я ошиблась. Не стоило так делать.
Рекомендую воспользоваться событием OnFilterRecord.
xxbesoxx прав, не стоит все таки так вот без проверок...
Да и учитывая, что ошибку ты ту так и не исправил, тебе точно нужно забыть о свойстве Filter в пользу вышеуказанного события.

Добавлено через 1 минуту
Цитата Сообщение от kobakoba7 Посмотреть сообщение
вот этот код работает нормально
К стати. В нем ошибка. Ты ADOQuery1.Filter в каждом условии затираешь.
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,607
12.07.2016, 23:33
Цитата Сообщение от kobakoba7 Посмотреть сообщение
вeти edit -и programa вставляет значение
Если пользователь случайно нажал пробел и потом вставил или набрал значения ?
Цитата Сообщение от kobakoba7 Посмотреть сообщение
If (Edit39.Text<>'') and (Edit47.Text<>'') and (Edit48.Text<>'') then begin
это код не будет работать нормально и за этого надо применять функция Trim
0
3 / 3 / 0
Регистрация: 21.05.2016
Сообщений: 304
14.07.2016, 19:34  [ТС]
Hikari,
Цитата Сообщение от Hikari Посмотреть сообщение
К стати. В нем ошибка. Ты ADOQuery1.Filter в каждом условии затираешь.
честно говоря я не поняла что я там затираю no кod работает нормально .

xxbesoxx, Если пользователь случайно нажал пробел и потом вставил или набрал значения ?
веты edit - и 39 47 48 значение попадают из dbgrid по клику так что там так что там пробел нэ попадёт
есле толка но пустую ичейку ни накликаешь, е это и как нибудь переживу. в конце концов програми для сибиа пишу
и для друзей. чтобы аблегчить работу себя и друзей.
0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
14.07.2016, 20:19
Цитата Сообщение от kobakoba7 Посмотреть сообщение
я не поняла что я там затираю
Попробую пояснить на части кода:
Code
1
2
3
4
If Edit48.Text='' then  
  ADOQuery1.Filter := 'monawile= '''+edit39.Text +''' and  procenti = '''+Edit47.Text+'''';
If Edit47.Text='' then  
  ADOQuery1.Filter := 'monawile= '''+edit39.Text +''' and  valuta_fsoni = '''+Edit48.Text+'''';
Допустим тебе нужно отфильтровать по полю процентов. Ты (или несведущий в управлении ПО пользователь) случайно вносит в Edit48 значение 11, а в Edit47 значение 58.
В этом случае выполнится фильтрация по полю valuta_fsoni, потому что у тебя в каждом условии написано:
Code
1
ADOQuery1.Filter := 'monawile= '''
Т.е. если взять ситуацию, в которой в несколько эдитов будет введено значение, то каждое из условий будет срабатывать, и каждый раз присваивать свойству ADOQuery1.Filter новое значение.
Можешь проэксперементировать и убедиться, что твой работающий код перестанет работать корректно если значения введены в несколько полей ввода.
0
3 / 3 / 0
Регистрация: 21.05.2016
Сообщений: 304
14.07.2016, 21:22  [ТС]
Hikari, Хитрая блондиночка как я выше гаварил пользователь вете edit - i не вносят ничиво проста кликают на dbgrid выбранные пользователям ячейку и значение вставляются в edit - и 39 47 48.
а работает фильтр так. допустим кликнул пользователь на столбик (monawile) "эта столбик имён" на какую нибуть ичейку выбрав какую нибуть имя, и сразу включается фильтр и фильтрует по этой имени, если ишо кликнуть на столбик (procenti) на какую нибуть ичейку выбрав какую нибуть pracent то будет отфильтрована по имени и по проценту и так далее ... . ну работает код нормально пака что ошибок не выдавал. на это не жалуюсь.

но щас с другой проблемой столкнулся. щас сабириус новую тему создать. если поможете буду благодарен . если кратко объяснить. хачу чтоб в праграме код делал то что векселе функция (sumif) делает.
0
15.07.2016, 01:31

Не по теме:

Не понял. ТС намеренно "ковыркает" русский язык или его не знает? Отвечать пока не буду.

0
Хитрая блондиночка $)
 Аватар для Hikari
1472 / 988 / 399
Регистрация: 21.12.2015
Сообщений: 3,785
15.07.2016, 09:34
Цитата Сообщение от kobakoba7 Посмотреть сообщение
как я выше гаварил пользователь вете edit - i не вносят ничиво
Это тебе так кажется, пока не найдется тот пользователь, который:
1) Вынесет тебе мозг
2) Сломает систему одним росчерком пальца
3) Еще раз вынесет мозг, утверждая "А мене ототак нужна! Тыжпрограммист - делай".

Все это тебе еще предстоит пройти, все эти квесты, если конечно ты планируешь свою дальнейшую карьеру связать именно с ИТ сферой. Если нет, то не парься - работает и пусть себе работает. Как говорил один знаменитый персонаж советского мультика: "И так сойдет".
0
3 / 3 / 0
Регистрация: 21.05.2016
Сообщений: 304
15.07.2016, 12:06  [ТС]
Hikari, я не программист хобби умения такой тах сказать и это хобби совмещаю с моей работы и так аблегчаю севе работо. и по ходу нравится праграмировать шивилить мазгами тах сказать
Цитата Сообщение от Hikari Посмотреть сообщение
"И так сойдет".


Добавлено через 1 минуту
a northener, что не понравилось не поняла
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,607
15.07.2016, 15:22
Цитата Сообщение от kobakoba7 Посмотреть сообщение
хочу чтоб при фильтрации пустые эдит игнорировал, и фильтровал толка со значениями заполненных edit.
Я бы отказался на фильтрации и делал параметризированный запрос и функция Trim там обязательно надо ! Смотрите пример пожалуйста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure TForm1.btnSearchClick(Sender: TObject);
begin
   with ADOQuery1 do
   begin
       SQL.Text := 'Select *  from MyTab '+
                   'where 7=7 ';
      if Trim(edtNaimen.Text)<>'' then
      begin
       SQL.Append('and Naimenovani =:'+ edtNaimen.Name) ;
       Parameters.ParamByName(edtNaimen.Name).Value:=Trim(edtNaimen.Text);
      end;
      if Trim(edtPrizvod.Text)<>'' then
      begin
       SQL.Append('and Proizvoditel =:'+ edtPrizvod.Name) ;
       Parameters.ParamByName(edtPrizvod.Name).Value:=Trim(edtPrizvod.Text);
      end;
      if Trim(edtCena.Text)<>'' then
      begin
       SQL.Append('and Cena =:'+ edtCena.Name) ;
       Parameters.ParamByName(edtCena.Name).Value:=Trim(edtCena.Text);
      end;
      Open;
   end;
end;
 
end.
Миниатюры
Фильтрация DbGrid: игнорировать пустые части фильтров   Фильтрация DbGrid: игнорировать пустые части фильтров  
Вложения
Тип файла: rar MyT1.rar (2.83 Мб, 3 просмотров)
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,607
15.07.2016, 15:25
Цитата Сообщение от northener Посмотреть сообщение
Не понял. ТС намеренно "ковыркает" русский язык или его не знает?
Ойй, извините уважаемы (Русский это не наши родной язык) и надеюсь Вы нам простите ! если мы где допускаем грамматические ошибки
Цитата Сообщение от northener Посмотреть сообщение
Отвечать пока не буду.
Почему не будите ? Для нас очень важно ваши ответ
0
3 / 3 / 0
Регистрация: 21.05.2016
Сообщений: 304
15.07.2016, 15:52  [ТС]
xxbesoxx, chagetvala . а ваш исходник позже посмотрю и есле паimu тем что как почему то переделаю код spasibo. щас сдругими праблемами сталкнулся пока их найда решет, ай это куд работает болие лимени
0
16.07.2016, 01:01

Не по теме:

Цитата Сообщение от xxbesoxx Посмотреть сообщение
Ойй, извините уважаемы (Русский это не наши родной язык) и надеюсь Вы нам простите ! если мы где допускаем грамматические ошибки
Нет. Это вы извините. Про вас я уже давно знаю, что русский для вас не родной. И даже объяснял это другим участникам форума. Но вот про ТС мне показалось (возможно ошибочно), что он намеренно коверкает язык. Возможно я ошибся.
Но вот от вас я никогда не видел такого сообщения - "щас сдругими праблемами сталкнулся".

0
16.07.2016, 01:11

Не по теме:

Цитата Сообщение от northener Посмотреть сообщение
Про вас я уже давно знаю, что русский для вас не родной. И даже объяснял это другим участникам форума.
Я вас помню на другом теме.! Я знаю что вы хороши человек и с большим уважением отношусь к вам Я извиняюсь если я вас нагрубил :drink:

Цитата Сообщение от northener Посмотреть сообщение
Но вот от вас я никогда не видел такого сообщения - "щас сдругими праблемами сталкнулся".
Бывает у всех новичков

0
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
16.07.2016, 02:00
[

Не по теме:

quote="xxbesoxx;9374363"]Бывает у всех новичков[/quote]
Не буду дальше спорить.

0
16.07.2016, 05:14

Не по теме:

Цитата Сообщение от northener Посмотреть сообщение
Не буду дальше спорить.
Пожалуйста , Мы некогда не спорили на форуме . Я ещё раз извиняюсь если я вас нагрубил..! Я хочу сказать что из какого стране мы не били
-- Россия
-- Украина
-- Белоруссия
-- Грузия
-- Молдавия
Мы все должен друг-другу помогать , Я когда встречаю в моего стране иностранов я помогаю и питаюсь понять когда они меня спрашивают "как они могут" . Я тоже бываю в чужом стране и меня тоже помогают. Я не критикую человеку когда они допускают "грамматические ошибки". наоборот мне приятно-весело общаться иностранцев.

0
18.07.2016, 01:23

Не по теме:

xxbesoxx, я и не сомневался что вы думаете так же как и я.

0
21.07.2016, 11:14

Не по теме:

Цитата Сообщение от xxbesoxx Посмотреть сообщение
когда встречаю в моего стране иностранов я помогаю
+100, льшь бы они без калашей приезжали и не в зеленых костюмах )))

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.07.2016, 11:14

Как Пропускать пустые ячейки В DBGrid
Ребята помогите уже неделю не могу решить задачку. У меня есть ADOQuery ADOTable DBGrid И Кнопка. При нажатии на кнопку должно...

Фильтрация dbgrid
Доброе время суток! Искал решение своей проблемы,но видимо плохо. Требуется провести фильтрацию dbgrid по полям combobox. Имеется Edit,...

Фильтрация в DBGrid
Необходимо осуществить фильтрацию базы данных в DBGrid. Для этого нужно в 3 Edit-а ввести данные 3-х полей таблицы (например, по фамилии,...

Фильтрация в DBGrid
Всем добрый день! Помогите разобраться с фильтрацией данных в таблице БД. Есть ComboBox, в котором содержаться ключевые для фильтрации...

Фильтрация в DBGrid
Нужно отфильтровывать запись по столбцам выбирая критерий фильтра из RadioButton (3 шт). Нажимая на кнопку остаются только те запись...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
После бана на Пикабу не работает авторизация аккаунта с Яндекса.
Hrethgir 09.07.2026
В частности https:/ / auto. ru/ logbook/ zapret-na-vozhdenie-posle-65-let_1cf28789-07b4-4c75-a2f7-4cd4edf9deeb тут хотел оставить комментарий такой Зрите в корень - монополизация на разработку программ. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru