Аватар для =AleXsei=
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40

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

24.06.2012, 13:24. Показов 4235. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
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 (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru