You need to sign in to do that
Don't have an account?
システム管理者 182
ApexClassでのデータ更新について
Visual Force Pageより保存ボタンを押下した際にクラスメソッドを呼び出し、カスタムオブジェクトへ登録しているのですが、
データ登録されるタイミングが、保存ボタンを押下した2回目以降に情報が反映されます
色々調べたのですが何故そのような結果になるのか分かりません
プログラムのどの部分が悪い為そのような結果になるのかアドバイス頂けると助かりません
宜しくお願い致します
例)
2回目 : 1回目のデータが反映
3回目 : 2回目のデータが反映
4回目 : 3回目のデータが反映
----------------------------------------------------------------------------------------------------------------------------------------------------------------
public void doClick() {
//履歴削除(検索履歴) 所有者削除
History_Hinban__c[] crDelEvent= [SELECT Id FROM History_Hinban__c];
try {
if (crDelEvent.size() != 0) delete crDelEvent;
} catch (DmlException e) {
}
String parameter1 = System.currentPageReference().getParameters().get('parameter1');
String parameter2 = System.currentPageReference().getParameters().get('parameter2');
String parameter3 = System.currentPageReference().getParameters().get('parameter3');
String parameter4 = System.currentPageReference().getParameters().get('parameter4');
String parameter5 = System.currentPageReference().getParameters().get('parameter5');
// 新規作成用(検索履歴)
List<History_Hinban__c> crEvent = new List<History_Hinban__c>();
// 商品情報検索
Map<String , HinbanMaster__c> mHinban = new Map<String , HinbanMaster__c>();
// 共通クラス生成
ClsDataInfo clsInfo = new ClsDataInfo();
List<String> sCode = new List<String>();
// 検索品番 ※品番が設定されていなければスルー
String strSetCode = '';
Integer listCnt = 5;
for (Integer i = 1; i <= listCnt ; i++) {
if (i == 1) {
strSetCode = parameter1;
} else if (i == 2) {
strSetCode = parameter2;
} else if (i == 3) {
strSetCode = parameter3;
} else if (i == 4) {
strSetCode = parameter4;
} else if (i == 5) {
strSetCode = parameter5;
} else {
strSetCode = null;
}
if (strSetCode != null && strSetCode != '') {
sCode.add(strSetCode);
mHinban = clsInfo.qrHinban(sCode);
if (mHinban.containsKey(strSetCode)) {
History_Hinban__c e1 = new History_Hinban__c(
JAN__c = mHinban.get(strSetCode).JAN__c ,
JMDN__c = mHinban.get(strSetCode).JMDN__c ,
Class_Group__c = mHinban.get(strSetCode).Class_Name__c ,
Standard__c = mHinban.get(strSetCode).Standard__c ,
Redemption_Price__c = mHinban.get(strSetCode).RedemptionPrice__c ,
Redemption_Group__c = mHinban.get(strSetCode).Redemption_Class__c ,
Hinban__c = mHinban.get(strSetCode).Hinban__c ,
Hinmei__c = mHinban.get(strSetCode).Hinmei__c ,
AuthorizationNo__c = mHinban.get(strSetCode).Pharma_Affairs_No__c ,
New_Price__c = mHinban.get(strSetCode).New_SalesPrice__c ,
New_Price_Date__c = mHinban.get(strSetCode).New_Price_Date__c ,
Price__c = mHinban.get(strSetCode).SalesPrice__c ,
BrandName__c = mHinban.get(strSetCode).Sales_Name__c
);
crEvent.add(e1);
}else{
History_Hinban__c e1 = new History_Hinban__c(
JAN__c ='' ,
JMDN__c = '' ,
Class_Group__c = '' ,
Standard__c = '' ,
Redemption_Price__c = '' ,
Redemption_Group__c = '' ,
Hinban__c = strSetCode ,
Hinmei__c = '' ,
AuthorizationNo__c = '' ,
New_Price__c = '' ,
New_Price_Date__c = '' ,
Price__c = '' ,
BrandName__c = ''
);
crEvent.add(e1);
}
}
}
if (crEvent.size() != 0) Insert crEvent;
}
データ登録されるタイミングが、保存ボタンを押下した2回目以降に情報が反映されます
色々調べたのですが何故そのような結果になるのか分かりません
プログラムのどの部分が悪い為そのような結果になるのかアドバイス頂けると助かりません
宜しくお願い致します
例)
2回目 : 1回目のデータが反映
3回目 : 2回目のデータが反映
4回目 : 3回目のデータが反映
----------------------------------------------------------------------------------------------------------------------------------------------------------------
public void doClick() {
//履歴削除(検索履歴) 所有者削除
History_Hinban__c[] crDelEvent= [SELECT Id FROM History_Hinban__c];
try {
if (crDelEvent.size() != 0) delete crDelEvent;
} catch (DmlException e) {
}
String parameter1 = System.currentPageReference().getParameters().get('parameter1');
String parameter2 = System.currentPageReference().getParameters().get('parameter2');
String parameter3 = System.currentPageReference().getParameters().get('parameter3');
String parameter4 = System.currentPageReference().getParameters().get('parameter4');
String parameter5 = System.currentPageReference().getParameters().get('parameter5');
// 新規作成用(検索履歴)
List<History_Hinban__c> crEvent = new List<History_Hinban__c>();
// 商品情報検索
Map<String , HinbanMaster__c> mHinban = new Map<String , HinbanMaster__c>();
// 共通クラス生成
ClsDataInfo clsInfo = new ClsDataInfo();
List<String> sCode = new List<String>();
// 検索品番 ※品番が設定されていなければスルー
String strSetCode = '';
Integer listCnt = 5;
for (Integer i = 1; i <= listCnt ; i++) {
if (i == 1) {
strSetCode = parameter1;
} else if (i == 2) {
strSetCode = parameter2;
} else if (i == 3) {
strSetCode = parameter3;
} else if (i == 4) {
strSetCode = parameter4;
} else if (i == 5) {
strSetCode = parameter5;
} else {
strSetCode = null;
}
if (strSetCode != null && strSetCode != '') {
sCode.add(strSetCode);
mHinban = clsInfo.qrHinban(sCode);
if (mHinban.containsKey(strSetCode)) {
History_Hinban__c e1 = new History_Hinban__c(
JAN__c = mHinban.get(strSetCode).JAN__c ,
JMDN__c = mHinban.get(strSetCode).JMDN__c ,
Class_Group__c = mHinban.get(strSetCode).Class_Name__c ,
Standard__c = mHinban.get(strSetCode).Standard__c ,
Redemption_Price__c = mHinban.get(strSetCode).RedemptionPrice__c ,
Redemption_Group__c = mHinban.get(strSetCode).Redemption_Class__c ,
Hinban__c = mHinban.get(strSetCode).Hinban__c ,
Hinmei__c = mHinban.get(strSetCode).Hinmei__c ,
AuthorizationNo__c = mHinban.get(strSetCode).Pharma_Affairs_No__c ,
New_Price__c = mHinban.get(strSetCode).New_SalesPrice__c ,
New_Price_Date__c = mHinban.get(strSetCode).New_Price_Date__c ,
Price__c = mHinban.get(strSetCode).SalesPrice__c ,
BrandName__c = mHinban.get(strSetCode).Sales_Name__c
);
crEvent.add(e1);
}else{
History_Hinban__c e1 = new History_Hinban__c(
JAN__c ='' ,
JMDN__c = '' ,
Class_Group__c = '' ,
Standard__c = '' ,
Redemption_Price__c = '' ,
Redemption_Group__c = '' ,
Hinban__c = strSetCode ,
Hinmei__c = '' ,
AuthorizationNo__c = '' ,
New_Price__c = '' ,
New_Price_Date__c = '' ,
Price__c = '' ,
BrandName__c = ''
);
crEvent.add(e1);
}
}
}
if (crEvent.size() != 0) Insert crEvent;
}