Dynamics NAV 2013报告 - 如何创建条件左外连接的等效项?

时间:2017-04-25 09:26:27

标签: report dynamics-nav

我们使用Microsoft Dynamics NAV 2013 R2,并且我被要求修改报告。该报告当前从Sales Line表中提取数据,我需要包含存储在Item表中的Manufacturer Part No。 “销售线”表包含“项目编号”,该项目可能存在于“项目”表中,也可能不存在,并且只应在“销售线”记录的“类型”为“项目”的情况下进行查找。

如果我正在编写SQL,我将使用条件左外连接:

SELECT [Other Columns], "Item"."Manufacturer Part No"
FROM "Sales Line"
LEFT OUTER JOIN "Item" ON "Sales Line"."Type" = 'Item'
    AND "Sales Line"."Item No" = "Item"."No"

根据MSDN,如果我进入报表数据集设计器,将Item表添加为数据源并查看属性,我应该能够将DataItemLinkType设置为SQL高级选项,并将SQLJoinType设置为LEFT OUTER JOIN,但这些属性都未在数据源的“属性”框中列出。

如何在NAV 2013 R2中访问DataItemLinkType和SQLJoinType,使其成为LEFT OUTER JOIN,以及如何使Sales Line类型为“Item”的连接条件?

4 个答案:

答案 0 :(得分:0)

它不可能 - 您链接的MSDN文章是针对Query对象的。 但我们需要有关此报告的更多信息,以便能够为您提供帮助。 这是标准的资产净值报告吗?

干杯

答案 1 :(得分:0)

像azatoth一样,我们需要更多信息。

但是根据你所写的内容,你似乎需要将第二个表添加为(子)Dataitem并使用这些属性来建立两个表之间的链接。

属性DataItemTableView可用于过滤子(右)表。

希望这有帮助。

答案 2 :(得分:0)

在顾问的帮助下,我得出结论,这在资产净值中并非直接可行,但有两种可能的方法可以提供我想要的东西:

  1. 在“销售订单”表中添加其他字段。使其成为查找字段,在Item表上查找Manufacturing Part No,使用Item No字段进行过滤。这种方法的优势在于,该字段随后可用于使用“销售订单”表的任何页面或报表,但这确实意味着这些页面和报表需要重新测试以检查是否存在任何不可预见的副作用。
  2. 在报表数据集设计器中将Item表添加为DataItem,然后将父DataItem(Sales Line DataItem)的PrintOnlyIfDetail属性设置为" No"。这具有将此父项的所有子项设置为LEFT OUTER连接的效果。
  3. 无论采用哪种方法,连接都不是有条件的,因此您需要使用表达式设置制造零件号的可见性,以便仅在销售线的类型为"项目&#34时显示;。

答案 3 :(得分:0)

我尝试了选项2,但是由于某种原因,我得到了任何订单行的2条商品记录。有什么想法吗? DataItemLink是