前回重複チェックについて質問した者です。
完成したかに思われたのですが重要なことを見逃していました。
結論から言いますと重複チェックをしているときに編集中のレコードも検索してしまい、
変更後は1つしかないレコードも、編集前が重複していたら重複しているとエラーが出てしまいます。
省略していますがコードは↓になります。
var query = ‘(<フィールドコードA>="’ + <入力されたレコードを入れた変数> + ‘“) and (<フィールドコードB>=”’ + <入力されたレコードを入れた変数> + ‘")’;
return new kintone.Promise(function(resolve, reject) {
var params = {app: masterAppId, query: query};
kintone.api(‘/k/v1/records’, ‘GET’, params, function(resp) {
resolve(resp);
console.log(resp.records.length);
});
}).then(function(resp) {
if (resp.records.length) {
record[‘<フィールドコードA>’].error = ‘重複しています’;
}
return event;
});
レコード追加画面の保存実行前イベントを参考にしました。
Arrayがレコードの件数だと思い1の時にエラーを出すようにしましたが
レコードを編集中と格納されているもので2件重複するようにしたところ
Arrayが1になり保存されてしまいます。
解決する方法があればぜひご教授ください。
よろしくお願いします。
解決の方向に向かっています。
respの中にレコードIDが入っていますが、それを
kintone.app.record.getId()で取得したIDと
比較をしたいのですが方法がありましたらよろしくお願いします。
T_jimaさん
はじめまして、たまと申します。
resp内のidと現在開いてるレコードのidは、
それぞれ、以下で取得できます。
var respId = resp.records[0].id.value;
var recordId = kintone.app.record.getId();
respIdとrecordIdが一致しない場合に重複エラーとすることで、
解決できそうですが、いかがでしょうか。
if(respId != recordId){
record[‘XXX’].error = ‘重複しています’;
}
なお、他のレコードで重複したデータが無いことを想定しております。
たま様
回答ありがとうございました。
書き込め無い環境にいたため返信が遅れてしまい
誠に申し訳ございません。
ご教授いただいた方法で試したところ無事にできましたので
これで完成が見えてきました。
本当に有難うございました。