この記事の目次
Salesforceのnot allowedとは?
![](https://b-engineer-media-cms.s3.amazonaws.com/item/image/user/9e08934fd24485c7d9e691a312f16a4ef7ff96eb/ae96882d-db89-4ef7-bc6a-7c5656b30403.jpg)
Salesforceでnot allowedが出る条件
![](https://b-engineer-media-cms.s3.amazonaws.com/item/image/user/356a192b7913b04c54574d18c28d46e6395428ab/e404ee1e-1281-4076-aa53-328dc9b01e32.jpg)
DMLとは
SalesforceにおいてのDMLとは、データベースに対する検索、更新、削除、登録をするときの指示のことです。Apexという言語でデータベースクラスメソッドやApex DMLステートメントを使用して実行ができます。 データ追加や更新、削除や復元などDMLステートメントで使うことが可能です。insert DMLでは、個別で取引先、取引の代表者など1つ、複数の組織データを追加できます。SQLで例えると、INSERT ステートメントに似ています。 以下サンプルコードです。Account newAcct = new Account(name = 'Acme');
try {
insert newAcct;
} catch (DmlException e) {
// Process exception here
}
update DMLは個別の取引先、取引責任者、請求書の明細など組織のデータを複数で更新が可能です。SQLで例えると、UPDATE ステートメントに似ています。
以下サンプルコードです。
Account a = new Account(Name='Acme2');
insert(a);
Account myAcct = [SELECT Id, Name, BillingCity FROM Account WHERE Id = :a.Id];
myAcct.BillingCity = 'San Francisco';
try {
update myAcct;
} catch (DmlException e) {
// Process exception here
}
DML currently not allowedのサンプルコード
「DML currently not allowed」というエラーが発生するサンプルコードを紹介します。最初に取引先の判定処理をして、結果を画面に出力するサンプルです。判定が正常に行われた場合は、「Checked_ok」、という項目をturuにしてupdateします。 下記、サンプルコードになります。
<!-- Visualforceページ -->
<apex:page controller=""AccountCheckController"">
< apex:outputText value=""{! msg }"" />
</apex:page>
/**
* コントローラクラス.
*/
public class AccountCheckController {
/** 取引先ID */
public String accountId;
/** メッセージ */
public String msg{get; set;}
/**
* コンストラクタ.
*/
public AccountCheckController() {
Map paramMap = ApexPages.currentPage().getParameters();
this.accountId = paramMap.get('id');
// 取引先取得
List accountList = [SELECT Id, Name, Checked_ok FROM Account WHERE Id =: this.accountId];
if (accountList.size() == 0) {
this.msg = '取引先が取得できませんでした。';
return;
}
Account acc = accountList.get(0);
// 判定処理
AccountCheck accountCheck = new AccountCheck();
boolean result = accountCheck.exec();
if (!result) {
this.msg = '判定処理でエラーが発生しました。';
return;
}
// 判定処理が正常であれば、チェック実施済フラグを立てる
acc.Checked_ok = true;
update acc;
this.msg = '判定処理が完了しました!';
}
}
Salesforceのnot allowedの解決方法
![](https://b-engineer-media-cms.s3.amazonaws.com/item/image/user/9e08934fd24485c7d9e691a312f16a4ef7ff96eb/14b88427-dd65-4038-afeb-54cc1b3f92a7.jpg)
<!-- Visualforceページ -->
<!-- 追加部分 -->
<apex:page controller=""AccountCheckController"" action=""{! init }"">
<apex:outputText value=""{! msg }"" />
</apex:page>
/**
* コントローラ.
*/
public class AccountCheckController {
/** 取引先ID */
public String accountId;
/** メッセージ */
public String msg{get; set;}
/**
* 初期表示処理(追加部分).
*/
public void init() {
Map paramMap = ApexPages.currentPage().getParameters();
this.accountId = paramMap.get('id');
// 取引先取得
List accountList = [SELECT Id, Name, Checked_ok FROM Account WHERE Id =: this.accountId];
if (accountList.size() == 0) {
this.msg = '取引先が取得できませんでした。';
return;
}
Account acc = accountList.get(0);
// 判定処理
AccountCheck accountCheck = new AccountCheck();
boolean result = accountCheck.exec();
if (!result) {
this.msg = '判定処理でエラーが発生しました。';
return;
}
// 判定処理が正常であれば、チェック実施済フラグを立てる
acc.Checked_ok = true;
update acc;
this.msg = '判定処理が完了しました!';
}
}
Salesforceを便利に活用しよう
![](https://b-engineer-media-cms.s3.amazonaws.com/item/image/user/9e08934fd24485c7d9e691a312f16a4ef7ff96eb/d6ae6b5f-cb44-447a-817e-d2b3512ec5cc.jpg)
この記事の監修者・著者
![株式会社オープンアップITエンジニア](https://tenshoku-careerchange.jp/wp-content/uploads/2023/07/fzxADbr-_400x400-1-150x150.jpg)
-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
最新の投稿
- 2024年3月26日キャリア・転職保安職(自衛官・警察・消防官など)に向いている人の性格・特徴ランキング【現役保安職(自衛官・警察・消防官など)36人が回答】
- 2024年3月26日キャリア・転職保安職(自衛官・警察・消防官など)に必要なスキルランキング&スキルアップの方法とは?【現役保安職(自衛官・警察・消防官など)36人が回答】
- 2024年3月26日キャリア・転職クリエイター職(ライター・デザイナー・編集)に向いている人の性格・特徴ランキング【現役クリエイター職(ライター・デザイナー・編集)64人が回答】
- 2024年3月26日キャリア・転職クリエイター職(ライター・デザイナー・編集)に必要なスキルランキング&スキルアップの方法とは?【現役クリエイター職(ライター・デザイナー・編集)64人が回答】