みなさんこんにちは。
salesforceお助け隊の加藤です。
今回は、以下のエラーを回避する方法をご紹介します。
「System.QueryException: List has no rows for assignment to SObject」
上記のエラーは、SOQLクエリ実行時に、結果が取得できない場合に発生します。
例えば、以下のようなSOQLで検索結果を取得しようとした場合です。
Account accountObj = [SELECT ID, NAME, FROM Account NAME='株式会社アイロベックス'];
取引先名が「株式会社アイロベックス」と一致する
取引先のレコードが存在しないと、「System.QueryException」が発生してしまいます。
しかし、上記のように特定のレコードのデータを取得したいケースは多々あるかと思います。
この問題を回避するには、以下のようにする必要があります。
Apexでは、SOQLで検索結果を取得する場合には、
sObjectの配列で取得することをお勧めします。
salesforceお助け隊の加藤です。
今回は、以下のエラーを回避する方法をご紹介します。
「System.QueryException: List has no rows for assignment to SObject」
上記のエラーは、SOQLクエリ実行時に、結果が取得できない場合に発生します。
例えば、以下のようなSOQLで検索結果を取得しようとした場合です。
Account accountObj = [SELECT ID, NAME, FROM Account NAME='株式会社アイロベックス'];
取引先名が「株式会社アイロベックス」と一致する
取引先のレコードが存在しないと、「System.QueryException」が発生してしまいます。
しかし、上記のように特定のレコードのデータを取得したいケースは多々あるかと思います。
この問題を回避するには、以下のようにする必要があります。
List<Account > accountObjList =このように、検索結果をsObjectの配列で取得すれば、エラーは発生しません。
[SELECT ID, NAME, FROM Account NAME='株式会社アイロベックス'] Account accountObj = null; if (accountObjList.size() > 0) { accountObj = accountObjList[0]; }
Apexでは、SOQLで検索結果を取得する場合には、
sObjectの配列で取得することをお勧めします。
「セールスフォースお助け隊ブログ」へのコメントやご意見等ありましたら
ファンページまでお願いします。 Facebookのファンページ

