isCustomerOrRelation
(and isCustomer
and )のソースに移動する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++ では違法ですが、クエリとビューを使用することは可能です。
2 つのクエリを作成します (自分で適切なプロパティに変換します)。
クエリ 1:
select * from dirPartyTable
exists join custTable
where custTable.Party == dirPartyTable.RecId
クエリ 2:
select * from dirPartyTable
exists join smmBusRelTable
where smmBusRelTable.Party == dirPartyTable.RecId;
クエリに基づいて 2 つのビュー (View1 と View2) を作成します。
ユニオン クエリ (クエリ 3) を作成します。ユニオン クエリでデータ ソースを結合する方法を参照してください。 UnionType
(Union
または)を忘れずに指定してUnianAll
ください。
クエリに基づいてビューを作成します3。クエリに基づいてビューを作成する方法を参照してください。
結果、X++ を使用してすべてのレコードを選択します。
while select * from dirPartyCustOrRelationTable
{
info(dirPartyCustOrRelationTable.Name);
}
または、Query3 を直接使用してレコードを取得することもできます。