我们希望在Microsoft Dynamics AX 2009中构建一个报告,以显示处理生产订单的所有员工。
在这个报告的数据源中,我们拖放了
ProdTable
(pt)由ProdID和DataAreaID连接到内部
ProdJournalRoute
(pjr)由EmplID和DataAreaID连接到内部
EmplTable
(et)我们通过name()
方法查找员工的姓名。
这份报告产生了一些有趣的输出:
pjr.TransDate pjr.EmplID et.EmplID et.name()
2010-07-20 05820
2010-07-20 05820 05820 Doe, John
2010-07-20 05820 05820 Doe, John
2010-07-21 00341 05820 Doe, John
2010-07-21 00007 00341 Snow, Jon
... ... ... ...
(Columns and rows snipped)
请参阅?在ProdJournalRoute
和EmplTable
之间的联接中,EmplID获得一行偏移。
现在我可以简单地将name()
方法从EmplTable
复制到ProdJournalRoute
表并完全放弃EmplTable
加入,但我担心这只是推迟问题:我可以做些什么来让我的加入工作?我应该使用手工查询并将其用作报告的数据源吗?
( PS:也许某人拥有必要的用户权限可以清理所有这些
[[[microsoft] dynamics] AX]
标签?谢谢!)
答案 0 :(得分:0)
检查表格ProdJournalRoute
和EmplTable
之间的关系。
将ProdJournalRoute.relations
设置为是或手动添加关系。
答案 1 :(得分:0)
搞定了。
我有点不愿意承认解决方案很简单:当我从头开始重建整个事情时,我将所有ProdJournalRoute
字段和EmplTable
字段添加到了 EmplTable _设计的代替而不是 ProdJournalRoute _Body,就像我第一次做的那样,这就完全不同了。
我仍然不太清楚报告如何以及在何处链接显示的数据。我认为查询应该作为一个整体执行,加入所有涉及的表,这样你只是无法获得表之间的这种数据差异,但它是:一个数据源{{ 1}}仅在设计的<DS>
_ Body中刷新。在数据源的设计主体中使用此数据源进一步加入查询会得到奇怪的结果:要么是未初始化的,要么是显示从连接到先前记录的旧数据。
再次感谢您的想法,Kjeldsen先生。
答案 2 :(得分:0)
在我看来,表实际上并没有在查询中加入,但是创建基础查询的抽象级别首先在最外面的表上运行一个select,然后运行“join”表的查询。这可能解释了为什么第一行没有来自EmplTable的数据。我的猜测是对EmplTable的查询没有足够快地为框架返回数据。看一下数据源的FirstFast属性以及它在MSDN上的作用:http://msdn.microsoft.com/en-us/library/aa842737(AX.10).aspx
但是,我可能错了。真正了解的唯一方法是尝试在数据库中试图运行SQL。