Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
 Аватар для =AleXsei=
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40

Неправильно работает фильтр

24.06.2012, 13:24. Показов 4223. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Итак давайте все сначало.
1. Открываю Делфи7 На форму кидаю Table1, DataSource1, DBGrid1
2. Делаю связь с базой данной, которая идет по умолчанию в делфи. DBDEMOS - biolife.db
3. Кидаю на форму Edit1 в событии OnChange пишу след:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.Edit1Change(Sender: TObject);
 begin
  if Length(Edit1.Text) = 0 then
    begin
      Table1.Filtered := False;
      Exit;
    end
  else
    begin
      Table1.Filtered := True;
      Table1.Filter := 'Category >= ' + QuotedStr(Edit1.Text);
    end;
end;
4. Итог: некорректно работает фильтр
5. Результат: (Посмотрите все скрины)
5.1. Первоначальная таблица: Скрин1
5.2. Вводим букву "S" Скрин2
5.3. Пишем слово "Smelt" Скрин3
5.4. Вводим букву "W" Скрин4 - как нистранно отфильтровал правильно
5.5. Вводим букву "T" Скрин5
5.6. Вводим букву "Q" Скрин6 - этой буквы вообще нету, а в результате он что то отфильтровал, зачем то.
 Комментарий модератора 
Теги кода исправлены модератором. Для оформления кода Delphi следует выделить этот код и на панели редактирования сообщения нажать кнопку: "DELPHI".
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.06.2012, 13:24
Ответы с готовыми решениями:

Фильтр работает неправильно
Привет, всем! Столкнулся с такой проблемой, хочу вывести по фильтру Заводской номер но когда ввожу цифры он просто прячет этот номер когда...

Проверьте задачку по циклам, неправильно работает. [думаю что неправильно]
Спасибо что решили зайти. Задание выгладит так: http://*******/PW95p А результат выплнения: http://*******/KwhuS #include...

Неправильно работает цикл for, и функции работают неправильно
1) Неправильно работает цикл for(k=0...). Входит только 1 раз, дальше вылетает. Делал пошаговую отладку на проверку значения k. Выдаёт...

36
 Аватар для CHARMED
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
24.06.2012, 16:39
Студворк — интернет-сервис помощи студентам
Delphi
1
2
with DataSet do
 Accept := (Pos(Edit1.Text,FieldByName('fam').AsString)>0)
Соединяемся с DataSet, и передаем ему параметры фильтрации через Edit1 в поле
Delphi
1
FieldByName('fam')
- в данном случае 'fam'...

Цитата Сообщение от =AleXsei= Посмотреть сообщение
Добавлено через 18 секунд
Спасибо огромное кстати, реально выручил прям...
не зачто....(нажмите +1 спасибо...)
1
 Аватар для =AleXsei=
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 16:58  [ТС]
Цитата Сообщение от CHARMED Посмотреть сообщение
Delphi
1
2
with DataSet do
 Accept := (Pos(Edit1.Text,FieldByName('fam').AsString)>0)
Соединяемся с DataSet, и передаем ему параметры фильтрации через Edit1 в поле
Delphi
1
FieldByName('fam')
- в данном случае 'fam'...


не зачто....(нажмите +1 спасибо...)
1.как сделать чтобы чувствительно к регистру не было?
2.Ну я не совсем понял, я хотел узнать что значит Pos, AsString>0, Accept
3. А если я хочу несколько фильтров поставить через едит на одной и тойже таблицы?
4. Если хочу сразу два фильтра поставить, т.е. проверка по двум фильтрам одновременно?
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
24.06.2012, 17:22
Delphi
1
Accept := (Pos(AnsiUpperCase(Edit1.Text),AnsiUpperCase(FieldByName('fam').AsString))>0)
1
 Аватар для =AleXsei=
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 17:41  [ТС]
Цитата Сообщение от Аватар Посмотреть сообщение
Delphi
1
Accept := (Pos(AnsiUpperCase(Edit1.Text),AnsiUpperCase(FieldByName('fam').AsString))>0)
Не работает, работает только для W w и B b для остальных не хочет)

Добавлено через 3 минуты
Accept := (Pos(AnsiUpperCase(Edit1.Text),FieldByNa me('fam').AsString)>0)
Вот так работает, спасибо...
0
 Аватар для CHARMED
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
24.06.2012, 17:43
поменяй на
Delphi
1
Accept := (Pos(AnsiUpperCase(Edit1.Text),FieldByName('Category').AsString)>0)
0
 Аватар для =AleXsei=
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 17:56  [ТС]
Цитата Сообщение от CHARMED Посмотреть сообщение
поменяй на
Delphi
1
Accept := (Pos(AnsiUpperCase(Edit1.Text),FieldByName('Category').AsString)>0)
Уже)) но только есть в этом тоже минус я так понял он маленькие буквы перводит в большие т.е. если я ввиду слово целиком он уже не найдет запись) не будет фильтровать...
0
 Аватар для CHARMED
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
24.06.2012, 18:02
тогда все переводим в верхний регистр
Delphi
1
Accept := (Pos(AnsiUpperCase(Edit1.Text),AnsiUpperCase(FieldByName('Category').AsString))>0)
0
 Аватар для =AleXsei=
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 18:04  [ТС]
Цитата Сообщение от CHARMED Посмотреть сообщение
тогда все переводим в верхний регистр
Delphi
1
Accept := (Pos(AnsiUpperCase(Edit1.Text),AnsiUpperCase(FieldByName('Category').AsString))>0)
а так уже он не правильно фильтрует, оставляет некоторые лишние записи
0
 Аватар для CHARMED
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
24.06.2012, 18:06
Цитата Сообщение от =AleXsei= Посмотреть сообщение
а так уже он не правильно фильтрует, оставляет некоторые лишние записи
у меня все норм.... пример можешь привести (что именно остается)
0
 Аватар для =AleXsei=
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 18:16  [ТС]
Цитата Сообщение от CHARMED Посмотреть сообщение
у меня все норм.... пример можешь привести (что именно остается)
http://firepic.org/images/2012... dl2085.jpg

Добавлено через 36 секунд
Может опять че не правильно делаю=\ скинь код полностью=\
0
 Аватар для CHARMED
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
24.06.2012, 18:21
так и должно быть, он же ищет совпадение по всей строке, введите хотя две -максимум три первые буквы и будет результат...
1
 Аватар для =AleXsei=
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 19:47  [ТС]
Цитата Сообщение от CHARMED Посмотреть сообщение
так и должно быть, он же ищет совпадение по всей строке, введите хотя две -максимум три первые буквы и будет результат...
А вон как))

Добавлено через 1 час 2 минуты
А как одновременно можно сделать два фильтра, допустим фильтровать сразу по двум полям?)

Добавлено через 11 минут
Ну точнее сказать таким образом, на форму кинули два Edit'a, вот мы ввели какой то текст в первый Edit он нам отфильтровал потом во второй Edit ввели какой то текст и он нам еще до отфильтровал...
0
 Аватар для CHARMED
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
24.06.2012, 20:15
а насчет второго запроса - зачем он Вам(сколько записей в базе)
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
24.06.2012, 22:45
Доотфильтровать - новое условие в Filter или другая процедура для OnFilterRecord. Можно и в одной реализовать, усложнив логику
0
 Аватар для =AleXsei=
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 23:26  [ТС]
Цитата Сообщение от CHARMED Посмотреть сообщение
а насчет второго запроса - зачем он Вам(сколько записей в базе)
Ну мне для себя надо, чтобы просто знать...

Добавлено через 36 секунд
Цитата Сообщение от Аватар Посмотреть сообщение
Доотфильтровать - новое условие в Filter или другая процедура для OnFilterRecord. Можно и в одной реализовать, усложнив логику
А подробней можно? Ну на примере желательно, я так сам не соображу=\
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
24.06.2012, 23:42
Пример усложнения логики OnFilterRecord
Delphi
1
2
Accept := (Pos(AnsiUpperCase(Edit1.Text),AnsiUpperCase(FieldByName('Category').AsString))>0);
if Accept and (Trim(Edit2.Text)<>'')  then Accept:=(Pos(AnsiUpperCase(Trim(Edit2.Text)),AnsiUpperCase(FieldByName('FIO').AsString))>0);
1
 Аватар для =AleXsei=
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
25.06.2012, 00:37  [ТС]
Цитата Сообщение от Аватар Посмотреть сообщение
Пример усложнения логики OnFilterRecord
Delphi
1
2
Accept := (Pos(AnsiUpperCase(Edit1.Text),AnsiUpperCase(FieldByName('Category').AsString))>0);
if Accept and (Trim(Edit2.Text)<>'')  then Accept:=(Pos(AnsiUpperCase(Trim(Edit2.Text)),AnsiUpperCase(FieldByName('FIO').AsString))>0);
А если допустим не усложнять, то как?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.06.2012, 00:37

Цикл работает неправильно, в то время как POST работает
Всем привет! Я хотел написать под php скрипт с авторизацией, брут, на своем сайте(подбор пароля). Написал код на загрузку словаря +...

Не работает Wi-Fi, клавиатура работает неправильно
ребят такая фигня , уже на двух разных ноутбуках заметил , не правильно печатает буквы с клавы и не работает вайфай , это точно ос моросит...

Now работает неправильно
if RadioButton3.Checked = true then begin t1:=now; ShowMessage('int = '+FloatToStr(t1)); for i:=1 to 65536 do begin ...

Неправильно работает if
Добрый день! столкнулся с проблемой, может кто нибудь знает что делать? условие оператора if не верное, но программа считает что...

неправильно работает
(*Программа 4.5*) var A, B: integer; Y: integer; X1, X2, Z1, Z2: real; (*координаты прямоугольника*) ...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 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. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru