通过c#实现的动态AX 2012 AIF QueryService -多表之间的关系和JoinMode使用
本文关键字:之间 关系 使用 JoinMode QueryService 实现 动态 AX AIF 2012 通过 | 更新日期: 2023-09-27 18:07:29
我想通过使用Visual studio和c#编写查询服务代码来创建一个复杂的用户定义AIF查询服务。我使用两个自定义表,其中一个是标题,一个是行表。我通过使用这两个表在查询中添加了字段,并应用了适当的范围,它工作得很好。现在我想在这两个表之间建立一个关系,这样我就可以根据关系获取数据。
请告诉我如何在AIF查询服务中建立多个表之间的关系。
query.DataSources = new QueryDataSourceMetadata[2];
query.Name = "AXCustomerInfo";
QueryDataSourceMetadata custTableDS = new QueryDataSourceMetadata();
custTableDS.Name = "CustTable";
custTableDS.Table = "CustTable";
custTableDS.Enabled = true;
query.DataSources[0] = custTableDS;
custTableDS.DynamicFieldList = false;
custTableDS.Fields = new QueryDataFieldMetadata[1];
QueryDataFieldMetadata accountNum;
accountNum = new QueryDataFieldMetadata();
accountNum.FieldName = "AccountNum";
accountNum.SelectionField = SelectionField.Database;
custTableDS.Fields[0] = accountNum;
custTableDS.HasRelations = true;
custTableDS.JoinMode =JoinMode.InnerJoin;
QueryDataSourceMetadata dirPartyTableDS = new QueryDataSourceMetadata();
dirPartyTableDS.Name = "DirPartyTable";
dirPartyTableDS.Table = "DirPartyTable";
dirPartyTableDS.Enabled = true;
query.DataSources[1] = dirPartyTableDS;
dirPartyTableDS.DynamicFieldList = false;
dirPartyTableDS.Fields = new QueryDataFieldMetadata[1];
QueryDataFieldMetadata name;
name = new QueryDataFieldMetadata();
name.FieldName = "Name";
name.SelectionField = SelectionField.Database;
dirPartyTableDS.Fields[0] = name;
dirPartyTableDS.HasRelations = false;
result = client.ExecuteQuery(query, ref paging);
foreach (DataRow row in result.Tables[0].Rows)
{
Console.WriteLine(String.Format("{0}", row[0]));
foreach (DataRow row1 in result.Tables[1].Rows)
{
Console.WriteLine(String.Format("{0}", row1[0]));
}
}
查看如何在查询中添加多个数据源。
:
- 设置子数据源的Relations属性为Yes。
或:
- 通过以下操作添加一个关系:
- 将子数据源的Relations属性设置为No。
- 右键单击Relations节点,然后单击New Relation。
- 在field属性中从父数据源中选择一个字段。
- 在RelatedField属性中从子数据源中选择一个字段。
- 保存所有修改
您可以使用OData查询服务访问查询的数据。
,
在代码中,您没有创建数据源的分层结构。因此,关系是行不通的。您将得到如下错误:您不能向根数据源添加关系。我已经在AX社区分享了我的回应。链接如下:573674年https://community.dynamics.com/ax/f/33/p/212065/573674