Topic: Фильтрация информации по наименованию закладок PageControl.

Добрый день!

Скажу сразу очень далек от программирования и нужна помощь.

Суть дела в следующем:

1) Есть база данных с продукцией и ее типом (запчасти,окна,стеклопакеты).

2) При помощи PageControl создана рабочая область, на которой размещена TableGrid.

3) Имена закладок в PageControl соответствуют типам продукции (Запчасти,Окна,Стеклопакеты).

Что и как нужно сделать что бы при нажатии закладки в область TableGrid выводился перечень продукции, который соответствует типу продукции.

Заранее и спасибо за любую помощь.

Re: Фильтрация информации по наименованию закладок PageControl.

В общем случае нужно добавить обработчик на событие PageControl.onChange . Дальнейшие действия зависят от структуры данных. Если ваша база нормализованная, то типы продукции - это справочник, а в  таблице с продукцией хранится ссылка на него. Тогда обработчик может быть таким:

procedure frmMain_pgcFinStatType_OnChange (Sender: TObject);
begin
  // установить фильтр по типу 
  frmMain.cmbFinStatType.dbItemID := frmMain.pgcFinStatType.ActivePageIndex+1;
  // обновить таблицу 
  frmMain.btnFinStatUpd.Click;
end;

В этом примере устанавливаем ID равным номеру страницы + 1, то есть не по названию, а по ID. А затем нажимаем кнопку, в которой реализован метод фильтрации данных.

Визуальное программирование: блог и телеграм-канал.

Re: Фильтрация информации по наименованию закладок PageControl.

На каждой вкладке PageControl-а размещен компонент TableGrid?
Тогда в настройках компонентов TableGrid можете указать фильтр


id_typeproduct = 1

где цифра это id записи, которая соотстветвует типу продукции, для каждого грида id будет свой.

Dmitry.

4 (edited by denamen 2018-01-12 13:16:03)

Re: Фильтрация информации по наименованию закладок PageControl.

Большое спасибо за помощь. Сделал по фильтру и все стало заработало.

Но появилась новая проблема.

Когда создаю новое наименование для типа (группа) продукции программа сама присваивает ей номер, который мне не виден и который я не могу изменить сам как это можно исправить.

Я приложил файл для наглядности.

Post's attachments

Attachment icon Work.zip 340.33 kb, 364 downloads since 2018-01-12 

Re: Фильтрация информации по наименованию закладок PageControl.

Есть три ошибки.


На форме pricegroup, кнопка Button1 для создания записи имеет неправильное действие, используйте действие "Новая запись", вместо "Показать форму".


На форме addpricegroup, в настройках кнопка с действием "Сохранить запись" (Добавить), вы забыли добавить компонент Edit2 в правый список, таком образом значение с данного компонента не сохраняется в базу данных. Тоже самое и для формы editpriceproup


Более того, нет никакой необходимости использовать две различные формы для добавления записи и для редактирования записи, используйте одну, например editpriceproup

Dmitry.

Re: Фильтрация информации по наименованию закладок PageControl.

DriveSoft wrote:

На каждой вкладке PageControl-а размещен компонент TableGrid?
Тогда в настройках компонентов TableGrid можете указать фильтр


id_typeproduct = 1

где цифра это id записи, которая соответствует типу продукции, для каждого грида id будет свой.

id - присваивается автоматически и не подлежит изменению, если удалить запись то нумерация продолжается без учета удаленной записи.

Создал собственный id который я сам назначаю и могу его редактировать и сделал под него запись с наименованием pricegroup.groupe ID как сделать по нему фильтр ?

Re: Фильтрация информации по наименованию закладок PageControl.

denamen
Извиняюсь за задержку с ответом. Вопрос все еще актуален для вас?

Dmitry.

Re: Фильтрация информации по наименованию закладок PageControl.

Да Дмитрий вопрос очень актуален. Заранее благодарю за помощь.

Re: Фильтрация информации по наименованию закладок PageControl.

Создал собственный id который я сам назначаю и могу его редактировать и сделал под него запись с наименованием pricegroup.groupe ID как сделать по нему фильтр ?

К сожалению не совсем понимаю вопроса, приложите пожалуйста ваш проект с подробным описанием проблемы.

Dmitry.

Re: Фильтрация информации по наименованию закладок PageControl.

Попробуйте сделать так:

  • Разместить PageControl в верхней части формы, уменьшив его размер так, чтобы отображались только закладки.

  • Ниже разместить TableGrid

  • Добавить скрипт генерации закладок

  • Добавить скрипт фильтрации при нажатии на закладку

Вот пример:

 procedure CreateTabMenu;
var
  Menu: TDataSet;
  TabSheet: TTabSheet;
  s: string;
begin
  // типы отчётов
  frmMain.pgcFinStatType.Pages[0].Free;
  s := 'select * from fin_stat_type order by id;';
  SQLQuery(s,Menu);
  while not Menu.Eof do
  begin
    TabSheet := TTabSheet.Create(frmMain);
    TabSheet.Caption :=  Menu.FieldByName('name').asString;
    TabSheet.PageControl := frmMain.pgcFinStatType;
    Menu.next;
  end;
  frmMain_pgcFinStatType_OnChange (frmMain.pgcFinStatType);
end;

Фильтрация данных настроена как функция "[ПОИСК]" в кнопке frmMain.btnFinStatUpd

procedure frmMain_pgcFinStatType_OnChange (Sender: TObject);
begin
  // установить фильтр по типу статистики
  frmMain.cmbFinStatType.dbItemID := frmMain.pgcFinStatType.ActivePageIndex+1;
  frmMain.btnFinStatUpd.Click;
end;

Пример сделан с допущением, что ID в таблице fin_stat_type идут последовательно: 1,2,3..   Если это условие не соблюдается (например, если записи удаляются), то можно записывать ID записи в свойство  TabSheet.tag, а затем передавать его в фильтр.

Визуальное программирование: блог и телеграм-канал.

Re: Фильтрация информации по наименованию закладок PageControl.

Добрый день!

На форме Work расположена PageControl на каждой вкладке PageControl-а размещен компонент TableGrid наименование которого соответствует типу продукции (запчасти,окна и т.д.).

Хочется сделать фильтрацию продукции по типу. Чтобы при открытии закладки Запчасти происходила фильтрация перечня продукции и отображались записи с отметкой запчасти.

Тип продукции вносится в отдельную базу pricegroup > group item.
При создание новой записи программа сама присваивает записи свой id который я не могу изменить.
А при удалении записи этот id продолжает нумерацию без учета удаления.

Попытался создать свой id в базе pricegroup > groupe ID но не могу по нему сделать работающий фильтр по аналогии id_typeproduct = 1.

Приложил проект для наглядности.

Post's attachments

Attachment icon Work.rar 299.27 kb, 328 downloads since 2018-02-09 

Re: Фильтрация информации по наименованию закладок PageControl.

К сожалению не могу понять суть проблемы. Зачем удалять созданную ранее группу? И зачем изменять id?


Создаете группу, посмотрите id этой группы, и прописываете этот id в настройках фильтра грида
id_pricegroup=14


и так на каждой вкладке.

Dmitry.