0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
1

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

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

Author24 — интернет-сервис помощи студентам
Итак давайте все сначало.
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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.06.2012, 13:24
Ответы с готовыми решениями:

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

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

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

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

36
66 / 65 / 13
Регистрация: 15.11.2010
Сообщений: 396
Записей в блоге: 1
24.06.2012, 14:23 2
Замени
Delphi
1
Table1.Filter := 'Category >= ' + QuotedStr(Edit1.Text);
На такой вот код
Delphi
1
Table1.Filter := 'Category like "'+Edit1.Text+'%"';
0
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
24.06.2012, 14:28 3
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Edit1Change(Sender: TObject);
begin
Table1.Filtered:=true;
end;
 
procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
with DataSet do
      Accept := (Pos(Edit1.Text,FieldByName('Name').AsString)>0)  //Name - имя поля где ищем текст введеный Edit1
end;
0
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 14:39  [ТС] 4
Цитата Сообщение от Артём121 Посмотреть сообщение
Замени
Delphi
1
Table1.Filter := 'Category >= ' + QuotedStr(Edit1.Text);
На такой вот код
Delphi
1
Table1.Filter := 'Category like "'+Edit1.Text+'%"';
Запускается нормально но при первом же вводе
Ошибка Скрин

Добавлено через 10 минут
Цитата Сообщение от CHARMED Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Edit1Change(Sender: TObject);
begin
Table1.Filtered:=true;
end;
 
procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
with DataSet do
      Accept := (Pos(Edit1.Text,FieldByName('Name').AsString)>0)  //Name - имя поля где ищем текст введеный Edit1
end;
Вообще ничего не фильтрует=\
0
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
24.06.2012, 14:40 5
Цитата Сообщение от =AleXsei= Посмотреть сообщение
Вообще ничего не фильтрует=\
Скинь свой проект....
1
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 14:49  [ТС] 6
Цитата Сообщение от CHARMED Посмотреть сообщение
Скинь свой проект....
Ссылка
0
66 / 65 / 13
Регистрация: 15.11.2010
Сообщений: 396
Записей в блоге: 1
24.06.2012, 14:52 7
Уверен, что должно пойти , т к у себя только что так попробывал
Delphi
1
Table1.Filter := 'Category like '''+Edit1.Text+'%''';
Разница заключается в кавычках. В первом ответе я использовал двойные кавычки, но почитав в интернете про правильность расстановки кавычек Delphi, узнал, что нужно использовать не двойные кавычки, а две одинарные
0
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 14:59  [ТС] 8
Цитата Сообщение от Артём121 Посмотреть сообщение
Уверен, что должно пойти , т к у себя только что так попробывал
Delphi
1
Table1.Filter := 'Category like '''+Edit1.Text+'%''';
Разница заключается в кавычках. В первом ответе я использовал двойные кавычки, но почитав в интернете про правильность расстановки кавычек Delphi, узнал, что нужно использовать не двойные кавычки, а две одинарные
Такая же ошибка, мож я чето туплю не знаю, ну ссылку на проект смотри выше, мож че получится у тебя.
0
66 / 65 / 13
Регистрация: 15.11.2010
Сообщений: 396
Записей в блоге: 1
24.06.2012, 15:02 9
Действительно не выходит. Думаю,что Table не поддерживает операцию like.
0
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
24.06.2012, 15:05 10
вот мой проект, если не поймете что и как пишите , распишу все подробней...
Вложения
Тип файла: rar BD_2.rar (717.6 Кб, 38 просмотров)
0
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 15:17  [ТС] 11
Цитата Сообщение от CHARMED Посмотреть сообщение
вот мой проект, если не поймете что и как пишите , распишу все подробней...
Я конечно понимаю что достал, но у меня при запуске уже ошибку пишет
Application.MainFormOnTaskbar:= True;

Build
[Hint] Unit1.pas(34): Variable 's' is declared but never used in 'TForm1.Button1Click'
[Error] Project1.dpr(11): Undeclared identifier: 'MainFormOnTaskbar'

Если закоментировать то запускается, ввожу S фильтр работает но если я сотру текст то все все записи исчезают да и кнопка тоже становится невидимой D
0
66 / 65 / 13
Регистрация: 15.11.2010
Сообщений: 396
Записей в блоге: 1
24.06.2012, 15:19 12
Сделал
Вложения
Тип файла: rar Test_Filter.rar (318.2 Кб, 13 просмотров)
0
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 15:25  [ТС] 13
Цитата Сообщение от Артём121 Посмотреть сообщение
Сделал
Квери...=\ через table никак? квери я вообще не знаю, не работал даже, а шас мне получается все таблицы надо переделывать и код переписывать=\
0
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
24.06.2012, 15:27 14
Удалите эту строчу..
Delphi
1
 Application.MainFormOnTaskbar := True;
0
66 / 65 / 13
Регистрация: 15.11.2010
Сообщений: 396
Записей в блоге: 1
24.06.2012, 15:29 15
Без Query я не знаю как. В коде замени Table1 на Query1. Больше менять ничего не требуется.
0
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 15:40  [ТС] 16
Цитата Сообщение от CHARMED Посмотреть сообщение
Удалите эту строчу..
Delphi
1
 Application.MainFormOnTaskbar := True;
А что еще за папка там wDebug ?
Ну а можно сделать условия что если нету текста то фильтр фолсе?
0
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
24.06.2012, 15:45 17
На форме:
Edit1: TEdit;
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;

1. Table1 - Свойство - параметр
Database - DBDEMOS
Table - biolife.db

2. DataSource - Свойство - параметр
DataSet - Table1
Enable - true

3. DBGrid1 - Свойство - параметр
DataSource - DataSource1

4. Table1 - Свойство - параметр
Active - true

В результате Выше перечисленного >картинка

Добавьте две процедуры и все больше ничего не надо делать...
Миниатюры
Неправильно работает фильтр  
1
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 15:55  [ТС] 18
Цитата Сообщение от CHARMED Посмотреть сообщение
На форме:
Edit1: TEdit;
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;

1. Table1 - Свойство - параметр
Database - DBDEMOS
Table - biolife.db

2. DataSource - Свойство - параметр
DataSet - Table1
Enable - true

3. DBGrid1 - Свойство - параметр
DataSource - DataSource1

4. Table1 - Свойство - параметр
Active - true

В результате Выше перечисленного >картинка

Добавьте две процедуры и все больше ничего не надо делать...
Вот её богу у меня не фильтруется, но у вас я смотрю делфи xe у меня делфи7 разница есть нет?
0
89 / 70 / 9
Регистрация: 04.03.2012
Сообщений: 206
24.06.2012, 15:58 19
тогда не знаю.... разница есть конечно,
откуда В Вашем проекте вот эти строчки
Delphi
1
2
3
4
5
6
7
8
 Table1SpeciesNo: TFloatField;
    Table1Category: TStringField;
    Table1Common_Name: TStringField;
    Table1SpeciesName: TStringField;
    Table1Lengthcm: TFloatField;
    Table1Length_In: TFloatField;
    Table1Notes: TMemoField;
    Table1Graphic: TGraphicField;
0
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 40
24.06.2012, 16:31  [ТС] 20
Цитата Сообщение от CHARMED Посмотреть сообщение
тогда не знаю.... разница есть конечно,
откуда В Вашем проекте вот эти строчки
Delphi
1
2
3
4
5
6
7
8
 Table1SpeciesNo: TFloatField;
    Table1Category: TStringField;
    Table1Common_Name: TStringField;
    Table1SpeciesName: TStringField;
    Table1Lengthcm: TFloatField;
    Table1Length_In: TFloatField;
    Table1Notes: TMemoField;
    Table1Graphic: TGraphicField;
Сами создались, да я щас сделал все с нуля, прописал две процедуры и ничего... ваш проект работает, но мне надо много таких фильтров сделать в других проектах. и да когда с нуля делал этих строчек там не было.

Добавлено через 5 минут
Ой я дурак... все работает

Добавлено через 38 секунд
Можно еще вопрос, как сделать чтобы чувствительно к регистру не было?

Добавлено через 18 минут
И да, объясни мне суть этого кода, расшифруй так скажем, пожалуйста.
with DataSet do
Accept := (Pos(Edit1.Text,FieldByName('fam').AsString)>0)

Добавлено через 18 секунд
Спасибо огромное кстати, реально выручил прям...
0
24.06.2012, 16:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.06.2012, 16:31
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru