You need to sign in to do that
Don't have an account?
koj
getとDBからのデータ比較について
ご存知の方がいらっしゃいましたら、ご教授お願いします。
visualforceページで{!Account.ID}から取得したIDをgetでApexクラスに渡し、
Apexクラスで取得したDBのIDと比較を行います。
dID = ApexPages.currentPage().getParameters().get('ID');
List<Account> resultList = [select id, Name from Account];
for(Account a : resultList ){
if(dID != a.ID ) {
//処理①
}else{
//処理②
}
}
常に処理①を通るような結果になってしまいます。
データでは、dIDとa.IDが同じものがありますので、
処理②を通るケースがあるはずなのですが。
getでデータを渡したとき、もしくは、DBからデータを取得したときに
ゴミが入っているのでしょうか。
ご存知の方がいらっしゃいましたら、お教え下さい。
getで取得したIDは15桁、DBから取得したIDは18桁になっていないでしょうか?
System.debug('ID=' + dID);
とかでデバッグを出して確認してみてください。
追記補足:
もしそうだとしたら、18桁IDの前15桁で比較すれば良いと思います。
大変助かります。ありがとうございます。
さっそく確認してみます。
さっそく試みてみなしたが、うまく動作しませんでした。
テキスト関数のMIDの使用方法が悪いのでしょうか?
dID = ApexPages.currentPage().getParameters().get('ID');
List<Account> resultList = [select id, Name from Account];
for(Account a : resultList ){
if(dID = MID(a.ID,1,15)){
//処理①
}else{
//処理②
}
}
substringを使用したらどうでしょうか?
substringも試みたのですが、以下のメッセージが出力されます。
Method does not exist or incorrect signature: [Id].substring(Integer, Integer)
MIDの場合も、同じようなエラーメッセージが出力されてしまう状況です。
idにsubstringは使えないのかな
それなら
としたらどうでしょうか
よいヒントになりました。ありがとうございます。
無事やりたいことができました。