Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.06.07;
Скачать: CL | DM;

Вниз

Фильтрация по нескольким полям   Найти похожие ветки 

 
Роман   (2009-04-20 20:22) [0]

Здравствуйте. У меня имеется таблица. Фильтрую данный следующим образом:


if Edit1.Text<>"" then
 ADOTable3.Filter:="Год="+Edit1.Text;
 ADOTable3.Filtered:=true;


но проблема заключается в том что таблица состоит из 16 полей. И имеется 12 Editов.  Каждому из которых соответствует определенное поле. Как мне одновременно фильтровать данные по нескольким полям. Но только по тем, которые заполнил пользователь. Если же Edit пуст, в таком случае соответствующее ему поле при фильтрации не трогать. Возможен конечно вариант описать все возможные сочетания заполненных Editoв, но это нереально т.к. их в моём случае получится 12!=............... ))Подскажите пожалуйста как ещё можно решить мою проблему. Заранее спасибо.


 
Виталий Панасенко(дом)   (2009-04-20 22:29) [1]

Удалено модератором


 
Роман   (2009-04-20 22:43) [2]

Удалено модератором


 
Игорь Шевченко ©   (2009-04-20 23:12) [3]

var
 FilterString: string;
begin
 FilterString := "";
 if Edit1.Text <> "" then
 begin
   if FilterString <> "" then
     FilterString := FilterString + FilterDelimiter; //Не знаю я, чем условия фильтра отделяются, в справку лень смотреть, сам посмотри
   FilterString := Edit1Field+"="+Edit1.Text; //Edit1Field - название поля, чье значение в Edit1
 end;
 if Edit2.Text <> "" then
 begin
   if FilterString <> "" then
     FilterString := FilterString + FilterDelimiter;
   FilterString := Edit2Field+"="+Edit2.Text; //Edit2Field - название поля, чье значение в Edit2
 end;
.....
 if Edit12.Text <> "" then
 begin
   if FilterString <> "" then
     FilterString := FilterString + FilterDelimiter;
   FilterString := Edit12Field+"="+Edit12.Text; //Edit12Field - название поля, чье значение в Edit12
 end;
if FilterString <> "" then
begin
  ADOTable3.Filter:=FilterString;
  ADOTable3.Filtered:=true;
end;

А потом делаешь массив из названий полей и Edit-ов и то же самое в единственном цикле :)


 
Anatoly Podgoretsky ©   (2009-04-20 23:29) [4]

> Роман  (20.04.2009 20:22:00)  [0]

Соединяй условия через AND, но замучаешься работать с таким количестве полей в условии, если вообще дождешься результата.


 
clickmaker ©   (2009-04-21 12:49) [5]

> как ещё можно решить мою проблему. Заранее спасибо

в цикле можно. Либо создав массив ссылок на эдиты, либо через FindControl


 
clickmaker ©   (2009-04-21 12:50) [6]

либо же, положив эти эдиты на панель для удобства перебора, через ее свойство Controls


 
Новичок   (2009-04-22 02:01) [7]

Почему просто не прописать в каждом эдите по событию onChange следующий код:

if Length(Edit1.Text)>0 then
ADOTable3.Filtered:=true
else
ADOTable3.Filtered:=false;
ADOTable3.Filter:="Год>="+QuotedStr(SotFilterFam.Text);

В следующем эдите будет:
if Length(Edit2.Text)>0 then
ADOTable3.Filtered:=true
else
ADOTable3.Filtered:=false;
ADOTable3.Filter:="Название_следующего_поля>="+QuotedStr(SotFilterFam.Text);

и так 12 раз

У меня так отлично работает с 5 полями.



Страницы: 1 вся ветка

Текущий архив: 2009.06.07;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.004 c
15-1238574089
Игорь Шевченко
2009-04-01 12:21
2009.06.07
Как давно это было :)


15-1238498323
Немо
2009-03-31 15:18
2009.06.07
что это может быть *.fbk ?


2-1240312554
ZeroCrash
2009-04-21 15:15
2009.06.07
Поиск поля для ввода текста и его замена


15-1238836320
Немо
2009-04-04 13:12
2009.06.07
sql Server Enterprise Manager, как скопировать job?


8-1194703672
Марсель
2007-11-10 17:07
2009.06.07
Размазывание!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский