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

Вниз

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

 
Клара   (2007-05-18 10:59) [0]

Добрый день Мастера!
Не откажите в любезности.
Как отфильтровать подчиненную таблицу, причем дважды подчиненную.
Организации - Акции - Промоутеры
Фильтровать нужно последнюю.


 
Sergey13 ©   (2007-05-18 11:04) [1]

А как главную фильтровать знаешь? Подчиненную (хоть трижды) абсолютно так же.


 
Клара   (2007-05-18 11:09) [2]

Ну примерно вот так и это работает без подчинения.

Form22.ADOTable3.Filter:="rajon_provedenija="""+Edit2.Text+"""";
Form22.ADOTable3.Filtered:=true;
Я как то делала, но очень давно. Вот пытаюсь, нужно быстро вот к Вам и обратилась.


 
Sergey13 ©   (2007-05-18 11:32) [3]

> [2] Клара   (18.05.07 11:09)
> Form22.ADOTable3

Чума!!! Какое разнообразие имен! 8-)

Ну так то же самое сделай с третьей таблицей.

А по смыслу тебе наверное надо настроить мастер-детальное соединение датасетов. И никакая фильтрация не потребуется.


 
Клара   (2007-05-18 11:41) [4]


> Sergey13

Помог!!!
Вы знаете что меня убивает, каждый раз Вы упорно показываете свое превосходство, а затем может последовать, а может и не последовать ответ.
Я и так знаю, что Вы лучше, дальше что... Ну попрыгайте полегчает.
Да не отвечайте. Смысл вашего форума потрепаться в "Прочее".


 
Плохиш ©   (2007-05-18 11:44) [5]


> Смысл вашего форума потрепаться в "Прочее".

Мазахисты какие-то, всё приходят и приходят... Есть же много других "добрых" форумов.


 
Sergey13 ©   (2007-05-18 11:46) [6]

> [4] Клара   (18.05.07 11:41)

Нет, смысл этого форума (как я его понимаю) помочь понять свои ошибки. А код давать бесполезно. Сама же пишешь "Я как то делала, но очень давно." Т.е. забыла. А если бы поняла, тогда давно, то проблем бы сейчас не возникло.
Кроме того ответы на вопросы не отменяют работу со справкой и литературой по теме.


 
Клара   (2007-05-18 11:59) [7]

Да я тебе и без справки скажу, что нужно включать связуемые поля в строку фильтра, ну и этот вариант я испробывала. Фильтрация работает только без зависимости от других таблиц. А то я не читаю и надеюсь только на подсказку, чёрт.
Ты сам попробуй, а то как с запросами пол дня расказывал, как делать, а когда попытался сделать понял...


 
DrAndrey ©   (2007-05-18 11:59) [8]

>Form22.ADOTable3.Filter:="rajon_provedenija="""+Edit2.Text+"""";
>Form22.ADOTable3.Filtered:=true;

А база то реляционная или как? Где идентификаторы?


 
Клара   (2007-05-18 12:15) [9]

База реляционная, идентификатором для таб. Организации (kod_org), для Акции (kod_org,Kod_akc), для Промо_Акция(kod_org,Kod_akc,Id_prom,data_akcii), связаны в том же порядке.
Нужно фильтровать таблицу Промо по разным полям (например по району проживания "rajon_provedenija", по дате и т.д.)


 
DrAndrey ©   (2007-05-18 12:58) [10]

Если все данные по которым предполагается фильтрация имеются в одной таблице, то ее подчиненность никакого значения не имеет.
Как вариант: использование фильтрации по выделенной ячейке (как в MS ACCESS), дешево и сердито. + Сортировка по клику заголовка столбца.
Если нужно дам код.


 
Клара   (2007-05-18 14:40) [11]


> DrAndrey

Если можно Ваш код.


 
DrAndrey ©   (2007-05-18 14:59) [12]

кнопка фильтр по выделенному

procedure TForm_Setka.ToolBtn_FVydClick(Sender: TObject);
 var F: String;
begin
 try
   With (DBGEh_Setka.DataSource.DataSet As TADODataset) do
   begin
     F:= Filter;
     if F<> "" then F:= F +  " AND ";
     F:= F + DBGEh_Setka.SelectedField.FieldName + "="""+  DBGEh_Setka.SelectedField.AsString +"""";
     Filter:= F; Filtered:= True;
     ToolBtn_FPrim.Down:= True; ToolBtn_FPrim.Enabled:= True; ToolBtn_FPrim.Tag:=1;
     ToolBtn_FPrim.Hint:="Отменить фильтр"; ToolBtn_FUd.Enabled:= True; StB.Panels[0].Text:= " Фильтр включен";
   end;

 Except
   ToolBtn_FUd.Click;
   MessageBox(Application.Handle, PChar("По этому столбцу использование фильтра невозможно, фильтр удален!"),
     PChar("Ограничение программы"), MB_OK or MB_ICONEXCLAMATION or MB_TOPMOST);
 end;
end;

кнопка применить фильтр

procedure TForm_Setka.ToolBtn_FPrimClick(Sender: TObject);
begin
 if ToolBtn_FPrim.Tag= 0 then
 begin
   DBGEh_Setka.DataSource.DataSet.Filtered:= True; ToolBtn_FPrim.Tag:=1;
   ToolBtn_FPrim.Hint:="Отменить фильтр"; StB.Panels[0].Text:= " Фильтр включен";
 end
 else begin
   DBGEh_Setka.DataSource.DataSet.Filtered:= False;  ToolBtn_FPrim.Tag:=0;
   ToolBtn_FPrim.Hint:="Применить фильтр"; StB.Panels[0].Text:= " Фильтр отключен";
 end;
end;

кнопка удалить фильтр

procedure TForm_Setka.ToolBtn_FUdClick(Sender: TObject);
begin
 DBGEh_Setka.DataSource.DataSet.Filter:= ""; ToolBtn_FPrim.Down:= False; ToolBtn_FPrim.Enabled:= False;
 ToolBtn_FPrim.Tag:=0; ToolBtn_FPrim.Hint:="Фильтр недоступен"; ToolBtn_FUd.Enabled:= False;
 StB.Panels[0].Text:= "";
end;

Если DataSet для грида находится не на этой форме - после её закрытия не забудь убрать фильтр.

PS: Код примитивный, прошу не пинать :-)


 
Anatoly Podgoretsky ©   (2007-05-18 21:31) [13]

> Клара  (18.05.2007 11:59:07)  [7]

В этом и дело, связаную таблицу фильтровать нельзя, она уже отфильтрована по связи.
Разорви связь и фильтруй.



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

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

Наверх




Память: 0.5 MB
Время: 0.019 c
1-1176295641
[Salo] phantom
2007-04-11 16:47
2007.06.10
События формы


2-1179571010
Nijaz
2007-05-19 14:36
2007.06.10
Как построить график


15-1178900041
Juice
2007-05-11 20:14
2007.06.10
XML редактор


15-1179415426
Карелин Артем
2007-05-17 19:23
2007.06.10
Меня попросили обьяву разместить.


2-1179579674
dfsfd
2007-05-19 17:01
2007.06.10
Path