Axapta 绕过AOT查询中的有效时间状态
我在Dynamics AX 2012中有一个AOT查询,它由HcmWorker和HcmEmployment表(以及其他表)组成。我的问题是,当我创建一个报告(不是SSRS)或以其他方式使用此查询时,我只会在Hcmememployment中获取具有有效时间状态的员工 我想让所有记录在此表中的员工,即使他们目前没有工作——而且只有一次。最佳解决方案是从hcmememployment获取当前雇用的记录(如果存在),否则获取开始日期在“现在”之前的最后一条记录。但是,我可以接受一个与最后开始日期合并的解决方案 我更喜欢这样一种解决方案,即不需要每次使用时都添加代码(即在AOT查询中解决) 我曾尝试在“来自代码”的查询上设置validTimeStateDateTimeRange属性,如果员工有多个雇员,则会导致重复的行 如果我将HcmEmployment数据源设置为ExistsJoin和firstOnly,则它在视图中工作,但在报表上不工作(仍然是重复记录):(在报表上使用此视图不是一个选项,因为用户需要能够从HcmEmployment中筛选DefaultDimensionAxapta 绕过AOT查询中的有效时间状态,axapta,dynamics-ax-2012,Axapta,Dynamics Ax 2012,我在Dynamics AX 2012中有一个AOT查询,它由HcmWorker和HcmEmployment表(以及其他表)组成。我的问题是,当我创建一个报告(不是SSRS)或以其他方式使用此查询时,我只会在Hcmememployment中获取具有有效时间状态的员工 我想让所有记录在此表中的员工,即使他们目前没有工作——而且只有一次。最佳解决方案是从hcmememployment获取当前雇用的记录(如果存在),否则获取开始日期在“现在”之前的最后一条记录。但是,我可以接受一个与最后开始日期合并的解
如何解决此问题?在我看来,您有相互冲突的选项: 我想让所有在此表中有记录的员工,即使他们目前没有工作 以及: 用户需要能够从HcmEmployment中筛选DefaultDimension 如果用户对雇佣进行筛选,那么如果未选择雇佣,员工是否应为printet 您可能想要的:
- 如果未在
上过滤,则禁用该数据源(属性HcmEmployment
)已启用
- 如果在
上进行筛选,请使用现有联接HcmEmployment
或者制作两份报告,一份带有或不带有对
hcmemememployment
的查询,在我看来,您有相互冲突的选项:
我想让所有在此表中有记录的员工,即使他们目前没有工作
以及:
用户需要能够从HcmEmployment中筛选DefaultDimension
如果用户对雇佣进行筛选,那么如果未选择雇佣,员工是否应为printet
您可能想要的:
- 如果未在
上过滤,则禁用该数据源(属性HcmEmployment
)已启用
- 如果在
上进行筛选,请使用现有联接HcmEmployment
hcmemememployment
的查询,我“解决”了自己的问题
由于某些原因,报表没有从AOT查询中正确继承属性(ExistsJoin
)。再次删除对报表的查询后,查询init
方法中的某些编译和以下代码将正常工作:)不再有重复记录
this.query().validTimeStateDateTimeRange(DateTimeUtil::minValue(),
DateTimeUtil::maxValue());
我“解决”了我自己的问题
由于某些原因,报表没有从AOT查询正确继承属性(ExistsJoin
)。在再次删除对报表的查询、一些编译和queryinit
方法中的以下代码后,它可以工作:)不再有重复记录
this.query().validTimeStateDateTimeRange(DateTimeUtil::minValue(),
DateTimeUtil::maxValue());
如果没有与用户筛选器匹配的记录,则不应打印员工。如果任何记录匹配,则应打印员工一次。您的解决方案需要在查询使用的每个位置(许多报告)编写大量代码,我希望避免这种情况。但是感谢您的建议:)然后选择第二个选项,使用
ExistsJoin
,然后在单独的选择中查找其余字段。如果我使用ExistsJoin
,那么我仍然会得到重复的记录。您建议我如何使用maxof
?我能看到它可以被使用的唯一方法是禁用HcmEmployment数据源,并且在遍历员工时,我可以检查他们是否有工作(通过使用用户范围)。不幸的是,在有大量员工的数据库中,性能会非常糟糕。这是一个解决方案,如果我没有找到一个更好的解决方案,我会考虑使用它。<代码>生存连接>代码将正常运行。对于其余的,我无能为力,因为这取决于具体的要求。如果没有与用户筛选器匹配的记录,则不应打印员工。如果任何记录匹配,则应打印员工一次。您的解决方案需要在查询使用的每个位置(许多报告)编写大量代码,我希望避免这种情况。但是感谢您的建议:)然后选择第二个选项,使用ExistsJoin
,然后在单独的选择中查找其余字段。如果我使用ExistsJoin
,那么我仍然会得到重复的记录。您建议我如何使用maxof
?我能看到它可以被使用的唯一方法是禁用HcmEmployment数据源,并且在遍历员工时,我可以检查他们是否有工作(通过使用用户范围)。不幸的是,在有大量员工的数据库中,性能会非常糟糕。这是一个解决方案,如果我没有找到一个更好的解决方案,我会考虑使用它。<代码>生存连接>代码将正常运行。对于其余的,我不能帮助,因为这取决于确切的要求。