You need to sign in to do that
Don't have an account?
k_ogawa
重複チェックについて
いつもお世話になっております。
小川です。
度々のご質問大変恐縮なのですが、お答えいただけると幸いです。
標題の通り重複チェックについてです。
visualforceで情報の登録画面を作っており、登録ボタンを押下した際に重複チェックの処理が流れるのですが、
処理仕様としては、
登録名、開始日をキーにSOQL文を走らせ、同一の内容があればカウントを取り、
1以上の場合は警告文を出すようにしています。
問題はここからで、登録名はテキストタイプになっているので、全角、半角自由に記入できてしまいます。
その結果、同じ名称を全角、半角それぞれ登録するとエラーとなって『予期せぬエラーが発生しました。』が表示されてしまいます。
IDで判断できれば一番いいのですが、IDが採番されるのはINSERT時?なのでチェックは難しいのかなと思っています。
SOQLでキーチェックをすることしか今のところ思い浮かばないので、何か打開策を与えて頂けたらと思います。
どうぞよろしくお願い致します。
小川です。
度々のご質問大変恐縮なのですが、お答えいただけると幸いです。
標題の通り重複チェックについてです。
visualforceで情報の登録画面を作っており、登録ボタンを押下した際に重複チェックの処理が流れるのですが、
処理仕様としては、
登録名、開始日をキーにSOQL文を走らせ、同一の内容があればカウントを取り、
1以上の場合は警告文を出すようにしています。
問題はここからで、登録名はテキストタイプになっているので、全角、半角自由に記入できてしまいます。
その結果、同じ名称を全角、半角それぞれ登録するとエラーとなって『予期せぬエラーが発生しました。』が表示されてしまいます。
IDで判断できれば一番いいのですが、IDが採番されるのはINSERT時?なのでチェックは難しいのかなと思っています。
SOQLでキーチェックをすることしか今のところ思い浮かばないので、何か打開策を与えて頂けたらと思います。
どうぞよろしくお願い致します。
「A.equals(B)」のようにequals関数を利用すると大文字と小文字を区別して比較してくれます。
また、重複判定を行う項目はユニーク項目として設定して、
登録時にDmlExceptionでエラーメッセージを表示する方法でも対応できると思います。
All Answers
「A.equals(B)」のようにequals関数を利用すると大文字と小文字を区別して比較してくれます。
また、重複判定を行う項目はユニーク項目として設定して、
登録時にDmlExceptionでエラーメッセージを表示する方法でも対応できると思います。
String Methods
http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#StartTopic=Content/apex_methods_system_string.htm?SearchType=Stem
いつもありがとうございます。
今回はequals関数ではなく、insert時にDmlExceptionを使用しようかと思います。
下記のように実装しようかと思います。
try{
insert evtstrlst ;
/** STEP1の画面に戻ります */
Pagereference prevPage = Page.CompanyAndBrandSelect;
return prevPage;
} catch (DmlException e){
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, '既に登録されているイベントデータがあります。'));
return null;
}
そこで、二点質問があるのですが、
1.
>>重複判定を行う項目はユニーク項目として設定
上記の部分についてなのですが、設定というのはどのように行うことでしょうか?
2.
エラー時にgetDmlMessageでエラー内容を取得できると思うのですが、その際IDのみを抽出することは可能でしょうか?
できれば、既に登録されている~の横に該当のレコードを表示させたいと考えております。
DmlException発生時のID取得は、getDmlIdで取得できるんじゃないかと思います。
DMLException and EmailException Methods
http://www.salesforce.com/us/developer/docs/dbcom_apex230/Content/apex_classes_exception_methods.htm
編集画面を見たら既に作られていました。
だから普通に処理が通ったんですね。
getDmlIdというのがあったんですね。
これで取得してみようと思います。
いつも初歩的な質問ばかりですみません。
今後ともよろしくお願いいたします。