通过链接的数据源过滤表单的主数据源

Nik*_*Kou 4 x++ axapta dynamics-ax-2012

我有一个自定义表单,它有两个数据源。让我们说让我的表单更轻松地包含 Salestable 和 SalesLines 数据源。

例如,我可以说我有一个以 ItemGroup edt 为界限的过滤器。

我想通过此过滤器过滤 SalesTable 数据源,以便在与 SalesOrders 数据源连接的网格中“显示”:

''所有'有'带有 saleslines.ItemGroup == somethingfromFilter的销售线的SalesOrders ''。

我试过的都失败了。有人能帮我吗?

仅供参考:我假设正确链接的数据源属性:SalesLine.JoinSource = SalesTable 我所有的尝试都是在过滤器的修改方法中。

Jan*_*sen 5

我假设您ItemGroupIdSalesLine表中有一个字段。这不是标准的。
此外,我将假设您有一个名为ItemGroupIdCtrl.

添加辅助数据源SalesLineEx

  • 名称:SalesLineEx
  • 表:销售线
  • 允许...:否
  • 加入来源:SalesTable
  • 链接类型:ExistJoin

SalesTable数据源executeQuery模式中:

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

如果过滤器字段有值,这将检查具有匹配字段的销售行是否存在。如果未输入任何值,则过滤数据源将被禁用。

您很可能希望在更改过滤器值后进行研究:

public boolean modified()
{
    boolean ret = super();
    salesTable_ds.executeQuery();
    return ret;
}
Run Code Online (Sandbox Code Playgroud)