Форум: "Начинающим";
Текущий архив: 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