自動採番の設定について

お世話になっております。
タイトルの件について、過去記事を参考に設定したのですが、どうもうまくいかず質問をさせていただきました。
現在、フィールドでラジオボタン(フィールド名:区分)と文字列1行(フィールド名:No)があり、
Noに区分+数字5桁の数字を+1ずつ順番に登録しようと思っています。
下記コードで設定しているのですが、区分を変更すると数字の部分が同じ番号が登録されることがあります。

(function() {
    "use strict";
    kintone.events.on(["app.record.create.show","app.record.index.edit.show","app.record.edit.show"],
                      
    function(e) {
        var record = e.record;
        record['No']['disabled'] = true;
        return e;
    });
    
    kintone.events.on('app.record.create.submit', function(e) {
        var recNo = 1;
        var record = e.record;
        var appUrl = kintone.api.url('/k/v1/records', true) + '?app=' + kintone.app.getId() + '&query=' + encodeURI('order by No desc limit 1 offset 0');
        var xmlHttp = new XMLHttpRequest();
        xmlHttp.open("GET", appUrl, false);
        xmlHttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
        xmlHttp.send(null);
 
        if (xmlHttp.status === 200) {
            if (window.JSON) {
                var obj = JSON.parse(xmlHttp.responseText);
                console.log(obj.records.length);
                if (obj.records.length > 0) {
                    try {
                        var recNoText = obj.records[0]['No'].value;
                        recNo = parseInt(('00000' + recNoText).slice(-5), 10) + 1;
                    } catch(e) { e.error = 'Noが取得できません。'; }
                }
                var kubun = {'区分1':'S','区分2':'K'}
                var autoEstNo = kubun[record.区分.value] + ('00000' + recNo).slice(-5);
                alert("No " + autoEstNo + " を登録します");
                record['No']['value'] = autoEstNo;
            } else { e.error = xmlHttp.statusText; }
        } else { record['No'].error = 'Noが取得できません。'; }
        return e;
    });
})();

お手数でございますが、ご教授いただければ幸いです。

Nao さん

レコード取得では、区分関係なしで最終レコードを取得しています。
区分毎に連番とする場合は、抽出条件に区分が必要です。

rex0220様

ご返信ありがとうございます。

私の説明がわかりにくく申し訳ございません。

区分毎に連番ではなく、

S00001⇒S00002⇒K00003⇒S00004⇒K00005

のように5桁数字のみ連番とし、区分は5桁数字の先頭に入るようにしたいです。

if (obj.records.length > 0) {
    try {
        var recNoText = obj.records[0]['No'].value;
        recNo = parseInt(('00000' + recNoText).slice(-5), 10) + 1;
    } catch(e) { e.error = 'Noが取得できません。'; }
}

上記部分で、取得したレコード(No)に+1をしていると認識しているのですが、

Noに文字が入ると数字として認識できず+1の処理が出来ていないからでしょうか。

度々お手数でございますが、ご確認お願い致します。

 

order by No desc だと、S の番号から取得します。

order by $id desc にすると、最終レコードを取得すると思います。

 

rex0220様

早速のご返答ありがとうございます。

ご教授いただいた部分を修正して、連番処理ができました。

本当にいつもありがとうございます。

今後ともよろしくお願いいたします。