Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.06.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
Роман   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
3-1222218828
РФМ
2008-09-24 05:13
2009.06.07
Наличие картинки


15-1237999517
Городской Шаман
2009-03-25 19:45
2009.06.07
Offline репликация данных своими руками.


15-1238693439
palva
2009-04-02 21:30
2009.06.07
Бесплатный хостинг fatal.ru возобновил регистрацию


15-1238663375
Галинка
2009-04-02 13:09
2009.06.07
Приложение автоматизации Ворда: вопрос...


4-1210775223
re_qas
2008-05-14 18:27
2009.06.07
ADSI в DLL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский