2

我在 Dynamics AX 2012 中有一个 AOT 查询,它由 HcmWorker 和 HcmEmployment 表(等等)组成。我的问题是,当我创建报告(不是 SSRS)或以其他方式使用此查询时,我只会在 HcmEmployment 中获取具有有效时间状态的员工。

我想获取在此表中有记录的所有员工,即使他们目前没有工作 - 而且只有一次。最佳解决方案是从 HcmEmployment 获取当前就业的记录(如果存在),否则获取开始日期在“现在”之前的最后一条记录。但是,我可以接受与最后开始日期结合的解决方案。

我更喜欢这样的解决方案,我不需要每次使用它时都添加代码(即在 AOT 查询中解决它)。

我尝试在代码查询中设置 validTimeStateDateTimeRange 属性,如果员工有多个工作,则会导致重复行。

如果我将 HcmEmployment 数据源设置为 ExistsJoin 和 firstOnly,那么它可以在视图中工作,但不适用于报告(仍然重复记录):( 不能在报告上使用此视图,因为用户需要能够在 DefaultDimension 上进行过滤来自 HcmEmployment。

我怎么解决这个问题?

4

2 回答 2

4

我“解决”了自己的问题……

由于某种原因,报告未正确继承ExistsJoinAOT 查询的属性 ( )。再次在报表上删除查询,一些编译和查询init方法中的以下代码后,它可以工作:) 不再有重复记录!

this.query().validTimeStateDateTimeRange(DateTimeUtil::minValue(), 
                                         DateTimeUtil::maxValue());
于 2012-04-25T07:42:51.383 回答
0

在我看来,您有相互矛盾的选择:

我想获取在此表中有记录的所有员工,即使他们目前没有工作

和:

用户需要能够从 HcmEmployment 过滤 DefaultDimension

如果用户过滤就业,如果未选择就业,员工是否应该被打印?

你可能想要的:

  • 如果不过滤HcmEmployment禁用该数据源(属性Enabled)。

  • 如果过滤HcmEmployment使用存在连接。

在这两种情况下,通过独立选择找到 maxof(ValidFrom)、maxof(ValidTo)。

看看这个答案,看看如何通过代码编辑查询属性。

或者制作两份报告,一份有和没有查询到HcmEmployment.

于 2012-04-24T12:19:20.207 回答