Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как произвести фильтр в отфильтрованном?


49 Cent ©   (2006-01-24 21:50:00) 

Суть в следующем. С помощью ниже указанного кода, происходит фильтрация с ориентиром на выделенную ячейку в Dbgrideh. Т.е выделил я в Dbgrid в поле "Клиент" ЧП пупкин, нажал на кнопку и осталсись записи только Пупкина.

s:=dbgrideh1.SelectedField.FieldName;
s1:=dbgrideh1.SelectedField.AsString;

with ADOTable1 do begin
Filter := s+'=' + QuotedStr(s1);
Filtered := True;
end;

Задача заключается в том, чтобы произвести фильтрацию в отфильтрованном. Т.е, к примеру, оставил я только Пупкина и теперь мне необходимо в отфильтрованном оставить, к примеру, только отгруженные заказы этого клиента, для чего нужно произвести фильтр в соответсвующем поле "Отгрузка". Как выполнить данную задачу?


49 Cent   (2006-01-25 17:52:00) [1]


> ты тормоз?

Космонавтом. :)

Анекдот есть такой:
-Мальчик как тебе зовут?
-тишина
- А сколько тебе лет?
- Гриша.
- А кем хочешь стать?
- 12
- Ты тормоз чтоли?
- Космонавтом
:)))))))

Всем спасибо за хелп, я понял.


Desdechado   (2006-01-25 16:43:00) [2]

все предыдущие фильтры у тебя уже в фильтре содержатся
тебе к нему осталось добавить новый кусок (допстроку)


Desdechado   (2006-01-25 16:42:00) [3]

49 Cent   (25.01.06 15:25) [10]
> Просьба опять же не кидать тухлятиной,
ты тормоз?

> сначала по одному полю, а затем по другому

             |              |
             V             V
> Filter := Filter + ' AND ' + допстрокафильтра


49 Cent   (2006-01-25 15:25:00) [4]


> Зачем? Всё это уже прописано в Filter. Тебе только остаётся
>  добавить новоу условие в фильтр
> Filter := Filter + ' AND ' + допстрокафильтра

Просьба опять же не кидать тухлятиной, но допстрокафильтра, должна (как я понимаю) содержать имя поля и непосредственно строку по которой идет фильтр. Т.е если речь идет о фильтре сначала по одному полю, а затем по другому, то как я понимаю, необходим код типа такого:

> with ADOTable1 do begin
> Filter := s+'=' + QuotedStr(s1)+'And'+ ss+'=' + QuotedStr(ss1);
>
> Filtered := True;
> end;

, где s и ss имена полей по которым идет фильтр, а s1 и ss1 значения по которым идет фильтр. Так вот! В этой ситуации по любому надо фиксировать сначала первый фильтр (s и s1) и второй фильтр (ss и ss1). Или нет?


Mike Kouzmine   (2006-01-25 13:39:00) [5]

49 Cent   (25.01.06 01:50) [6] Признаться первый раз слышу про мастер детаил связку

Не понял. Ты же с базой работаешь (типа аксесса), или я ошибся?. А о чем ты слышал?


Плохиш   (2006-01-25 11:11:00) [6]


> 49 Cent   (25.01.06 01:50) [6]
> Я признаться очень не люблю такие моменты. Тебе объесняют,
>  а ты тупишь.

Я что-то не совсем понял кто кому в этой ветке помогает :-)


ЮЮ   (2006-01-25 03:15:00) [7]


> Получается, чтобы проводить фильтр по профильтрованному,
>  мне нужно постоянно фиксировать (запоминать) предыдущие
> поля и значения, которые использовались при первоначальной
> фильтрации?

Зачем? Всё это уже прописано в Filter. Тебе только остаётся  добавить новоу условие в фильтр
Filter := Filter + ' AND ' + допстрокафильтра[1]

Плюс кнопка очистки фильтра


49 Cent   (2006-01-25 01:50:00) [8]

Я признаться очень не люблю такие моменты. Тебе объесняют, а ты тупишь. Кажется сейчас такой случай. Признаться первый раз слышу про мастер детаил связку. Может статьи какие есть? Или может найдутся добрые люди и объяснет как чайнику указанный Mike Kouzmine способ?


Mike Kouzmine   (2006-01-25 00:49:00) [9]

Клиенты
1 Вася Пупкин
2 Не Вася

Операции
1 Приход
2 Расход

Движение
1 1 123
2 1 23
1 2 144

делаешь мастер детаил связку по клиентам и движению, а потом просто тупо фильтруешь Движение


49 Cent   (2006-01-25 00:43:00) [10]


>  Свяжи клиентов (не мазо) с операциями и они "автоматически"
> будут фильтроватся по клиентам.

Ээээ. Не очень понял. С какими операциями? И что такое "не мазо"? И потом задача не состоит в том, чтобы связать именно клиентов. Пример про Пупкина просто пример.


Mike Kouzmine   (2006-01-24 23:52:00) [11]

49 Cent   (24.01.06 21:50)  Свяжи клиентов (не мазо) с операциями и они "автоматически" будут фильтроватся по клиентам. А уж там как хочешь.


49 Cent   (2006-01-24 23:19:00) [12]

Я не очень понимаю, как использовать этот код на 1 кнопке. Т.е если у меня около 7 потенциальных полей, то получается мне надо использовать 6 +'And'+? И потом каждый раз кликая на определенном поле я с помощью указанного кода:
s:=dbgrideh1.SelectedField.FieldName;
s1:=dbgrideh1.SelectedField.AsString;
фиксирую только текущее поле и значение этого поля. Получается, чтобы проводить фильтр по профильтрованному, мне нужно постоянно фиксировать (запоминать) предыдущие поля и значения, которые использовались при первоначальной фильтрации? Как бы мне решить эту задачу? Не могли бы вы объяснить немного подробней?


Desdechado   (2006-01-24 22:02:00) [13]

Filter := Filter + ' AND ' + допстрокафильтра


Наверх

Титульная страница Поиск, карта сайта Написать письмо