# 関連レコードの集計値を特定のフィールドに返したい

**URL:** <https://community.cybozu.dev/t/topic/177>\
**Category:** kintone 開発相談\
**Created:** [2016 年 12 月 15 日午前 7:54 UTC](https://community.cybozu.dev/t/topic/177 "2016-12-15T07:54:15Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1478](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account1478](https://community.cybozu.dev/u/Legacy_Account1478)\
**Post date:** [2016 年 12 月 15 日午前 7:54 UTC](https://community.cybozu.dev/t/topic/177/1 "2016-12-15T07:54:15Z")

</div>

初心者です。

どなたかご教示いただきたく。。

&nbsp;

サンプルを用いて、関連レコードを集計して、スペースに表示することは実装できました。

その集計値を「合計」（という）フィールドに返したいのですが、うまくいきません。

集計値を取ってくるまでが以下構文だと理解しているのですが、その後のアクションがわかりません。

* * *

(function() {  
“use strict”;

//レコードの編集、詳細画面で適用する  
var events = [  
‘app.record.detail.show’,  
‘app.record.edit.show’  
]  
kintone.events.on(events, function(event) {  
var record = event.record;  
var client\_rid = event.recordId;  
var related = kintone.app.getRelatedRecordsTargetAppId(‘関連レコード一覧’);  
var offset = 0;  
var loop\_end\_flg = false;  
var records = new Array();  
while(!loop\_end\_flg){  
var query = ‘顧客情報レコード番号="’ + client\_rid +  
‘" limit 100 offset ’ + offset;  
query = encodeURIComponent(query);  
var appUrl = kintone.api.url(’/k/v1/records’) + ‘?app=’+ related + ‘&query=’ + query;

// 同期リクエストを行う  
var xmlHttp = new XMLHttpRequest();  
xmlHttp.open(“GET”, appUrl, false);  
xmlHttp.setRequestHeader(‘X-Requested-With’,‘XMLHttpRequest’);  
xmlHttp.send(null);

//取得したレコードをArrayに格納  
var resp\_data = JSON.parse(xmlHttp.responseText);

if(resp\_data.records.length \> 0){  
for(var i = 0; resp\_data.records.length \> i; i++){  
records.push(resp\_data.records[i]);  
}  
offset += resp\_data.records.length;  
}else{  
loop\_end\_flg = true;  
}  
}

var amount = 0;  
for (var i = 0; i \< records.length; i++) {  
amount = amount + parseFloat(records[i].受注金額.value);

}

&nbsp;

※一部抜粋

---

<div class="post-metadata">

**Author:** ![Legacy\_Account536](https://avatars.discourse-cdn.com/v4/letter/l/c37758/32.png) [@Legacy\_Account536](https://community.cybozu.dev/u/Legacy_Account536)\
**Post date:** [2016 年 12 月 16 日午前 7:53 UTC](https://community.cybozu.dev/t/topic/177/2 "2016-12-16T07:53:53Z")

</div>

\*\*[nobuharu1111](https://community.cybozu.dev/hc/ja/profiles/3989334206-nobuharu1111)\*\*さん

非常にベタなやり方ですが、下記の方法でも更新できると思います。

var amount = 0;  
for (var i = 0; i \< records.length; i++) {  
amount = amount + parseFloat(records[i].受注金額.value);

}

var appid = kintone.app.getId();  
var recid = kintone.app.record.getId();

var Param = {  
“app”:appid,  
“id”:recid,  
“record”:{  
“受注金額”:{  
“value”: amount  
},  
},  
};

kintone.api(“/k/v1/record”,  
“PUT”,Param,  
function(resp){  
alert(“登録成功”);  
},  
function(resp){  
alert(“登録エラー”);  
}  
);

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account536](https://avatars.discourse-cdn.com/v4/letter/l/c37758/32.png) [@Legacy\_Account536](https://community.cybozu.dev/u/Legacy_Account536)\
**Post date:** [2016 年 12 月 16 日午前 7:57 UTC](https://community.cybozu.dev/t/topic/177/3 "2016-12-16T07:57:39Z")

</div>

追記

更新成功時に画面の再読込が必要かも。。。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1478](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account1478](https://community.cybozu.dev/u/Legacy_Account1478)\
**Post date:** [2016 年 12 月 16 日午前 8:08 UTC](https://community.cybozu.dev/t/topic/177/4 "2016-12-16T08:08:50Z")

</div>

[amuro](https://community.cybozu.dev/hc/ja/profiles/2721923143-amuro)さん

ありがとうございます。

早速試します。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1478](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account1478](https://community.cybozu.dev/u/Legacy_Account1478)\
**Post date:** [2016 年 12 月 16 日午前 8:31 UTC](https://community.cybozu.dev/t/topic/177/5 "2016-12-16T08:31:04Z")

</div>

[amuro](https://community.cybozu.dev/hc/ja/profiles/2721923143-amuro)さん

ありがとうございます。

データを返すところまで問題なく動きました。

ご推察の通り、再読み込みが必要でした。

そのこと自体は問題がないのですが、レコード編集を行う手順を想定しているため、解消したいです。

方法ございますでしょうか？

* * *

エラー

- レコードを再読み込みしてください。編集中に、ほかのユーザーがレコードを更新しました。
- (GAIA\_UN03 1505999166-113130855)

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account536](https://avatars.discourse-cdn.com/v4/letter/l/c37758/32.png) [@Legacy\_Account536](https://community.cybozu.dev/u/Legacy_Account536)\
**Post date:** [2016 年 12 月 16 日午前 8:36 UTC](https://community.cybozu.dev/t/topic/177/6 "2016-12-16T08:36:07Z")

</div>

nobuharu1111さん

更新成功時の画面再読込みの場合、そのままだとループするので

下記の方法で試してみて下さい。

&nbsp;

if ( record.受注金額.value != amount){

var appid = kintone.app.getId();  
var recid = kintone.app.record.getId();

var Param = {  
“app”:appid,  
“id”:recid,  
“record”:{  
“受注金額”:{  
“value”: amount  
},  
},  
};

kintone.api(“/k/v1/record”,  
“PUT”,Param,  
function(resp){  
location.reload(true);  
alert(“登録成功”);  
},  
function(resp){  
alert(“登録エラー”);  
}  
);

};

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1478](https://avatars.discourse-cdn.com/v4/letter/l/7bcc69/32.png) [@Legacy\_Account1478](https://community.cybozu.dev/u/Legacy_Account1478)\
**Post date:** [2016 年 12 月 16 日午前 9:20 UTC](https://community.cybozu.dev/t/topic/177/7 "2016-12-16T09:20:18Z")

</div>

[amuro](https://community.cybozu.dev/hc/ja/profiles/2721923143-amuro)さん

ありがとうございます。

値チェックがされ、問題なく動きました。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1607](https://avatars.discourse-cdn.com/v4/letter/l/eada6e/32.png) [@Legacy\_Account1607](https://community.cybozu.dev/u/Legacy_Account1607)\
**Post date:** [2017 年 4 月 21 日午前 5:13 UTC](https://community.cybozu.dev/t/topic/177/8 "2017-04-21T05:13:43Z")

</div>

この記事に対して関連質問させてください。

この記事を参考に関連テーブルの数値をJavaScriptで集計し、文字フィールドに表示することができました。

その際、詳細画面で１レコードごとに再読み込みしていますが、アプリごとに一括で更新することは可能でしょうか。

１レコードごとに開くのは過去の分も含め業務的に現実的ではなくなってきました。

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex015/uploads/cybozu/original/1X/d5c841c3c5a6cb66eed514001c1b45147c9e1f4f.png) [@system](https://community.cybozu.dev/u/system)\
**Post date:** [2025 年 8 月 22 日午前 6:47 UTC](https://community.cybozu.dev/t/topic/177/9 "2025-08-22T06:47:44Z")

</div>

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。
