2010-08-17 39 views
1

我有一个显示表格中的行的网格。现在,我有这两个要求:Dynamics AX中的复杂数据源问题

  1. 只显示包含“小时”字段中的值的行。 “小时”字段是一个数组类型。
  2. 显示从项目的线条和它的子项目

我的问题是这样的:满足需求#1,我需要使用select语句在我的数据源,因为我无法访问使用QueryBuildDataSource数组值(这是Dynamics AX中的已知limitation)。

但是为了满足要求#2,我需要有两个“存在连接”,这在Dynamics AX中是不可能的。例如,以下代码将不起作用:

select from table where 
exists join tableChild where projectId = MyProjectId OR 
exists join tableChild where parentProjectId = MyProjectId 

某人会如何解决此问题?

+0

您可以显示您的选择,因为这是不合法的。 – 2010-08-17 15:52:11

+0

您可以访问查询中的数组值,而不是作为链接文章的“查询表达式”。 – 2010-08-17 15:54:15

回答

0

您可以在使用fieldID2Ext函数提供字段ID的查询范围中使用数组值。

您可以构建视图并在其上应用外观。

+0

我尝试过使用fieldID2Ex,但我无法让它像“Or”一样工作。例如“where dimension [1]> 0 OR dimension [2]> 0”。 你能否详细阐述“构建视图并在其上应用外观”? – 2010-08-18 13:47:56

+0

使用数组字段时必须使用数据源名称 http://www.axaptapedia.com/Expressions_in_query_ranges#Filter_on_array_fields – user423060 2010-10-10 05:23:12

2

从您提供的select语句示例看来,可能不需要有两个存在的连接。一个存在与“OR”连接的where条件中的两个可能的条件可能就足够了,当然,你应该仍然在table和tableChild之间有一些关系,以使连接具有逻辑意义。

select from table 
exists join tableChild 
where (tableChild.projectId = MyProjectId || tableChild.parentProjectId = MyProjectId)