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

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

07.07.2016, 14:22. Показов 3370. Ответов 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,612
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,612
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,612
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,612
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 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,615
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
Ответ Создать тему
Новые блоги и статьи
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru