1

X++ を使用して顧客または見込み客を取得し、ルックアップで使用しようとしています。DirPartyTable私が欲しいものを返すメソッドがあります。

DirPartyTable::isCustomerOrRelation

while select * from dirPartyTable
{
       if(DirPartyTable::isCustomerOrRelation(dirPartyTable.RecId))
       {

                //Get the Name
                //info(dirPartyTable.Name);
       }
}

しかし、ルックアップへのクエリを作成するとき、クエリの を何らかの方法で渡そうとしてDirPartyTable::isCustomerOrRelation(dirPartyTable.RecId)います。addRangeそれを行う方法はありますか、それとも不可能ですか?

4

1 に答える 1

4

isCustomerOrRelation(and isCustomerand )のソースに移動するisRelationと、現在の会社に顧客または見込み客が存在する場合、メソッドが true を返すことがわかります。

あなたwhile selectの は正しいですが、現在の会社に存在する数千の顧客または見込み客を選択するために百万の関係者をスキャンする必要がある場合があるため、非効率的です。

より効率的ですが、構文的に違法なのwhile selectは次のとおりです。

while select * from dirPartyTable
   exists join custTable
   where custTable.Party == dirPartyTable.RecId
   union 
   select * from dirPartyTable
   exists join smmBusRelTable
   where smmBusRelTable.Party == dirPartyTable.RecId;
{
     info(dirPartyTable.Name);
}

X++ では違法ですが、クエリとビューを使用することは可能です。

  1. 2 つのクエリを作成します (自分で適切なプロパティに変換します)。

  2. クエリ 1:

    select * from dirPartyTable
        exists join custTable
        where custTable.Party == dirPartyTable.RecId
    
  3. クエリ 2:

    select * from dirPartyTable
        exists join smmBusRelTable
        where smmBusRelTable.Party == dirPartyTable.RecId;
    
  4. クエリに基づいて 2 つのビュー (View1 と View2) を作成します。

  5. ユニオン クエリ (クエリ 3) を作成します。ユニオン クエリでデータ ソースを結合する方法を参照してください。 UnionType(Unionまたは)を忘れずに指定してUnianAllください。

  6. クエリに基づいてビューを作成します3。クエリに基づいてビューを作成する方法を参照してください。

結果、X++ を使用してすべてのレコードを選択します。

while select * from dirPartyCustOrRelationTable
{
     info(dirPartyCustOrRelationTable.Name);
}

または、Query3 を直接使用してレコードを取得することもできます。

于 2012-06-20T12:22:50.177 に答える