0

C# アプリケーションを介して AX 2012 QueryService にアクセスしようとしており、CustomerID フィールドと Customername フィールドのみを取得したいと考えています。問題は、CustomerID が CustTable にあり、CustomerName が DirPartyTable にあることです。

記事またはコード サンプルへのヘルプをいただければ幸いです。

  1. これらのテーブルに結合してデータを取得するための QueryDataSourceMetadata への参照。
  2. Relations と JoinMode を使用するオプションとタイミングは?

MSDN で検索したところ、プロパティ名とメソッドがリストされているだけで、コード サンプルの形ではあまり役に立ちませんでした。

4

2 に答える 2

0

回答するには遅すぎます。すでにいくつかの解決策を見つけていると思います。とにかく、AX コミュニティに関する私の回答へのリンクは次のとおりです。

https://community.dynamics.com/ax/f/33/p/212065/573674#573674


C# から関係を追加する 2 つの方法を見つけました。AOT テーブル リレーションに基づく最初のアプローチについてコメントしました。以下のコードで、QueryServiceReference は VS のサービス参照名です。QueryService 参照のみがあり、MetaDataService 参照がない場合は、すべての行で削除できます。コードは次のとおりです。

query.DataSources = new QueryServiceReference.QueryDataSourceMetadata[1];

// Set the properties on Customers data source.
 customerDataSource = new QueryServiceReference.QueryDataSourceMetadata();
 customerDataSource.Name = "Customers";
 customerDataSource.Enabled = true;
 customerDataSource.FetchMode = QueryServiceReference.FetchMode.OneToOne;
 customerDataSource.Table = "CustTable";
 //customerDataSource.DynamicFieldList = false;

query.DataSources[0] = customerDataSource;


 QueryServiceReference.QueryDataSourceMetadata dirPartyTableDataSource = new QueryServiceReference.QueryDataSourceMetadata();
 dirPartyTableDataSource.Name = "DirPartyTable";
 dirPartyTableDataSource.Table = "DirPartyTable";
 dirPartyTableDataSource.Enabled = true;
 dirPartyTableDataSource.DynamicFieldList = true;


 customerDataSource.DataSources = new QueryServiceReference.QueryDataSourceMetadata[1] { dirPartyTableDataSource };
 QueryServiceReference.QueryRelationMetadata relation = new QueryServiceReference.QueryRelationMetadata();

 //this is also one way of setting the relation 
 //relation.JoinRelation = "DirPartyTable_FK"; //table relation defined in AOT
 //relation.JoinDataSource = customerDataSource.Name; //parent datasource name

relation.Table = "CustTable";//Parent table
 relation.Field = "Party"; 
 relation.RelatedTable = "DirPartyTable"; // child table
 relation.RelatedField = "RecId";
 relation.JoinDataSource = customerDataSource.Name; 
 dirPartyTableDataSource.Relations = new QueryServiceReference.QueryRelationMetadata[1] { relation };
于 2016-10-28T05:50:50.923 に答える