我有一个自定义表单,有两个数据表。让我们说使我的表单具有Salestable和SalesLines数据源更容易。
例如,我可以说我有一个与ItemGroup edt绑定的过滤器。
我想通过此过滤器过滤SalesTable数据源,以便在与SalesOrders数据连接的网格中“显示”:
''所有SalesOrders都有'saleslines的营业额.ItemGroup == somethingfromFilter ''。
无论我尝试什么都是假的。有人能帮助我吗?
仅供参考:我认为正确链接的数据源属性: SalesLine.JoinSource = SalesTable 我的所有尝试都是在过滤器的修改方法中。
答案 0 :(得分:3)
我假设您在ItemGroupId
表格中有一个SalesLine
字段。
这不是标准的
另外,我假设您在名为ItemGroupIdCtrl
的表单中有一个过滤字段。
添加帮助程序数据源SalesLineEx
:
在SalesTable
数据源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;
}
答案 1 :(得分:1)
我可能会误解你的问题,但如果你问如何过滤范围,这是一项非常基本的任务。
查看\Forms\PurchTable\Data Sources\PurchLine\Methods\init
,了解它们如何排除"已删除"。
如果您想加入SalesLines
到InventTable
以获取商品分组,您可以在此处查看如何修改表单的查询:
\Forms\PurchTable\Data Sources\PurchTable\Methods\linkActive
答案 2 :(得分:0)
Disclimer :我现在没有AX2012。我已经发布了AX2009的截图。功能是相同的
先决条件:您应该有一个交叉引用来使用此功能。
Repro步骤:
Advanced Filter/Sort
或Ctrl+F3
Sales order
树中的Structure
表。1:n
而不是Order Lines
以在过滤器中添加其他表格(您应该有交叉引用)Order line
树中的Structure
表。n:1
和Items (Item number)
以在过滤器中添加其他表格(您应该有交叉引用)Add
按钮,在范围网格中选择talble Items
和field Item groups
。指定criteria
= somethingfromFilter
请参阅下面的屏幕截图。
注意:Axapta仅在查询中使用其他表。您需要在AOT中更改表单业务逻辑以在表单上显示其他表/字段。
答案 3 :(得分:0)
过滤代码:
我有一个自定义表单,有两个数据表。
表单包含Salestable和SalesLines数据源。
我想过滤
'所有SalesOrders'都有'saleslines的营业额.ItemGroup == somethingfromFilter''
先决条件:自定义表单使用两个已加入数据源。 Join type
是以下之一:延迟,InnerJoin。
需要在SalesLine数据源中修改方法Init。
this.query().datasource(tablenum(salesLine)).addDatasource(...)
...
使用init-method和addDatasource文本查看任何形式的示例)