You need to sign in to do that
Don't have an account?

リストにSOQLで取得した値を設定するときにエラーになってしまう
お世話になっております。
下記のトリガで、ケースにデータローダで複数データを作成したとき、
18行目のリストにSOQLで取得した値を設定する箇所で
「System.QueryException: List has more than 1 row for assignment to SObject」というエラーになってしまいます。
ケースを1件のみ作成だとエラーにはなりません。
上記エラーはリストに格納すれば問題ない認識だったのですが、どこか問題がありますでしょうか。
よろしくお願いいたします。
下記のトリガで、ケースにデータローダで複数データを作成したとき、
18行目のリストにSOQLで取得した値を設定する箇所で
「System.QueryException: List has more than 1 row for assignment to SObject」というエラーになってしまいます。
ケースを1件のみ作成だとエラーにはなりません。
上記エラーはリストに格納すれば問題ない認識だったのですが、どこか問題がありますでしょうか。
よろしくお願いいたします。
trigger caseTrigger on Case (before insert) { if(Trigger.isInsert && Trigger.isBefore){ /***** 変数宣言 *****/ Map<Integer, Case> iCaseMap = new Map<Integer, Case>(); // ケースのMap List<Account> accList = new List<Account>(); // 取引先リスト Integer i = 1; /***** ケースのMapを作成 *****/ for(Case c : Trigger.new){ iCaseMap.put(i, c); i++; } if(!iCaseMap.isEmpty()){ /***** 取引先リストを作成 *****/ accList = [SELECT Id, Name FROM Account WHERE Name=:iCaseMap.values().Type ORDER BY Phone ASC LIMIT 1]; System.debug('★accList:'+accList); } } }
また、複数のsObject型を上記のようには判定で使用できないため、一度Set型なのに入れてあげる必要があります。
こんな感じでクエリを実行できると思います。
All Answers
また、複数のsObject型を上記のようには判定で使用できないため、一度Set型なのに入れてあげる必要があります。
こんな感じでクエリを実行できると思います。
ご回答ありがとうございます。
オブジェクト型使えないのですね。
ありがとうございました。