アカウントには、アカウントとのマスター/詳細関係にあるMonthlyとYearlyの2つのオブジェクトがあります。
Monthlyには、毎月キャプチャされたレコードがあります。たとえば、USA、GBR、IND ETC
年に一度の記録は、米国、GBR、INDなどをキャプチャしました
DBから取得している年次レコードが一致しておらず、たとえば、いくつかの国が追加されていることを確認しました。
月次は-USA、GBR、IND年次は-USA、GBR、INDですが、私たちは-USA、GBR、IND、AUSを持っていますが、これは間違っています。
AUSを含むレコードを見つけて、その情報を削除または再送信する必要があります。
月次および年次の一意のフィールドは
Distributor__c =アカウント付きのマスター詳細関係の出荷
AC_Sponsor_Key__c =両方のオブジェクトで一意である国+ディストリビューターID
この状況に取り組む方法についての解決策を手伝ってください
SalesforceとPostgresのどちらでソリューションを探しているかを指定していません;)
では、「年次」(おそらく「年次」と呼ばれるべきです)関連リストには、「月次」よりも多くのレコードがありますか?
アカウントに「GBR; IND; USA」のような値を含む2つのテキストフィールドを設定し、2つを単純に比較することができます(最良の結果が得られるように並べ替えられています)。トリガーを設定することも、ソースシステムから直接入力することもできます。
それが失敗した場合-これはあなたにいくつかのアイデアを与えるはずです。結果セットを制限するには、アカウントにフィルターを設定する必要があります。または、このコードスニペットからバッチジョブを作成しますか?
List<Account> accs = [SELECT Id, Name
FROM Account
WHERE Id IN (SELECT Distributor__c FROM Monthly__c)
AND Id IN (SELECT Distributor__c FROM Yearly__c)
ORDER BY Name
LIMIT 1000];
Set<String> keys = new Set<String>();
for(Monthly__c m : [SELECT AC_Sponsor_Key__c
FROM Monthly__c
WHERE Distributor__c IN :accs AND AC_Sponsor_Key__c != null]){
keys.add(m.AC_Sponsor_Key__c);
}
for(Yearly__c y : [SELECT Id, Distributor__c, AC_Sponsor_Key__c
FROM Yearly__c
WHERE Distributor__c IN :accs AND NOT IN :keys
ORDER BY Distributor__c, AC_Sponsor_Key__c]){
System.debug(y);
}
あるいは、このようなものを試すこともできます(純粋なSOQL /レポート、Apexなし)。ただし、国ごとに実行する必要があります。
SELECT Id, Name,
(SELECT Id FROM Yearlys__r WHERE Country__c = 'AUS')
FROM Account
WHERE Id IN (SELECT Distributor__c FROM Yearly__c WHERE Country__c = 'AUS')
AND Id NOT IN (SELECT Distributor__c FROM Monthly__c WHERE Country__c = 'AUS')
SELECT Id, Distributor__c, Distributor__r.Name
FROM Yearly__c
WHERE Country__c = 'AUS'
AND Distributor__c NOT IN (SELECT Distributor__c FROM Monthly__c WHERE Country__c = 'AUS')
今後は、「一致する月次がないため、この国に年次を挿入することはできません」という保護を検討することができます。以前はそれを行うことができましinsert trigger
たが、コードフリーのソリューションもあります。VLOOKUP関数と、検証ルールでの使用方法を確認してください。ただしName
、月次レコードに一意の一致値が必要であり、そこに何があるのかわかりません。役に立たない自動番号がある可能性があります...
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加