Фильтрация основного источника данных через связанный источник данных - PullRequest
0 голосов
/ 29 мая 2018

У меня есть пользовательская форма, в которой есть два источника данных.Скажем, чтобы было проще, у моей формы есть источники данных Salestable и SalesLines.

например, я могу сказать, что у меня есть фильтр, который ограничен с помощью ItemGroup edt.

Я хочу отфильтровать источник данных SalesTable через этот фильтр, чтобы «показать» в сетке, котораясвязан с источником данных SalesOrders:

'' все SalesOrders, у которых есть 'линии продаж с saleslines.ItemGroup ==thingfromFilter ' '.

Все, что я пробовал, не выполняется.Может ли кто-нибудь мне помочь?

К вашему сведению: свойства источников данных, которые я считаю правильными и связанными: SalesLine.JoinSource = SalesTable Все мои попытки выполнялись в модифицированном методе фильтра.

Ответы [ 4 ]

0 голосов
/ 30 мая 2018

Я предполагаю, что у вас есть поле ItemGroupId в таблице SalesLine.Это не стандарт.
Также я предполагаю, что у вас есть поле фильтра в форме с именем ItemGroupIdCtrl.

Добавить вспомогательный источник данных SalesLineEx:

  • Имя:SalesLineEx
  • Таблица: SalesLine
  • Разрешить ...: Нет
  • JoinSource: SalesTable
  • LinkType: ExistJoin

InSalesTable источник данных executeQuery modthod:

public void executeQuery()
{
    SysQuery::findOrCreateRange(salesLineEx_ds.queryBuildDataSource(), fieldNum(SalesLine,ItemGroupId)).value(ItemGroupIdCtrl.text());
    salesLineEx_ds.queryBuildDataSource().enabled(ItemGroupIdCtrl.text() != '');
    super();
}

Это проверит наличие торговых линий с соответствующим полем, если у поля фильтра есть значение.Если значение не введено, источник данных фильтрации отключен.

Скорее всего, вы захотите исследовать после изменения значения фильтра:

public boolean modified()
{
    boolean ret = super();
    salesTable_ds.executeQuery();
    return ret;
}
0 голосов
/ 30 мая 2018

Возможно, я неправильно прочитал ваш вопрос, но если вы спрашиваете, как фильтровать по диапазонам, это довольно простая задача.

Посмотрите на \Forms\PurchTable\Data Sources\PurchLine\Methods\init, чтобы увидеть, как они исключают строки, которые "удалены".

Если вы хотите присоединиться SalesLines к InventTable, чтобы получить группу элементов, вы можете посмотреть, как вы можете изменить запрос формы в другом примере здесь:

\Forms\PurchTable\Data Sources\PurchTable\Methods\linkActive

0 голосов
/ 30 мая 2018

Фильтр по коду:

У меня есть настраиваемая форма с двумя источниками данных.

Форма имеет источники данных Salestable и SalesLines.

Я хочуfilter

'все SalesOrders, у которых' есть 'линии продаж с saleslines.ItemGroup ==thingfromFilter' '

Предварительное условие : пользовательская форма использует два присоединенных источники данных.Join type является одним из: Задержка, InnerJoin.

Решение

Необходимо изменить метод Init в источнике данных SalesLine.

this.query().datasource(tablenum(salesLine)).addDatasource(...)
...

См. Примеры в любой форме сinit-метод и addDatasource текст)

Init-Methods with AddDatasource text

0 голосов
/ 30 мая 2018

Disclimer : У меня сейчас нет AX2012.Я разместил скриншоты с AX2009.Функционал тот же

Предварительное условие : для использования этого функционала необходимо иметь перекрестные ссылки.

Шаги воспроизведения:

  1. открытьform
  2. нажмите кнопку на панели инструментов Advanced Filter/Sort или Ctrl+F3
  3. щелкните правой кнопкой мыши по таблице Sales order в дереве Structure.
  4. выберите и нажмите 1:n и затем Order Lines для добавления дополнительной таблицы в фильтр (у вас должна быть перекрестная ссылка)
  5. щелкните правой кнопкой мыши по таблице Order line в дереве Structure.
  6. выберите и нажмите n:1 и Items (Item number), чтобы добавить дополнительную таблицу в фильтр (у вас должна быть перекрестная ссылка)
  7. нажмите кнопку Add и выберите talble Items и поле Item groups в сетке Range.Укажите criteria = somethingfromFilter

См. Скриншоты ниже.

Примечание : Axapta использует дополнительные таблицы только в запросе.Вам необходимо изменить бизнес-логику формы в AOT для отображения дополнительных таблиц / полей в форме.

Add tables with Advanced filter

Add criteria with added tables

...