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

Вниз

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

 
Клара   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.05 c
3-1174578377
Draught
2007-03-22 18:46
2007.06.10
Case sensitivity в запросе


15-1178957569
Алхимик
2007-05-12 12:12
2007.06.10
МВД Москвы: Linux - порнография


15-1178608499
DemonP
2007-05-08 11:14
2007.06.10
портирование кода C++ -> Delphi


1-1176535114
kyn66
2007-04-14 11:18
2007.06.10
Картика в гриде не отрисовывается транспарентно


9-1153070015
Зм1й
2006-07-16 21:13
2007.06.10
"Вертикальная синхронизация"





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