# サブテーブル内の特定行の更新について

**URL:** <https://community.cybozu.dev/t/topic/3530>\
**Category:** kintone 開発相談\
**Created:** [2018 年 11 月 15 日午前 1:33 UTC](https://community.cybozu.dev/t/topic/3530 "2018-11-15T01:33:09Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account777](https://avatars.discourse-cdn.com/v4/letter/l/977dab/32.png) [@Legacy\_Account777](https://community.cybozu.dev/u/Legacy_Account777)\
**Post date:** [2018 年 11 月 15 日午前 1:33 UTC](https://community.cybozu.dev/t/topic/3530/1 "2018-11-15T01:33:09Z")

</div>

お世話になります。

作業日報入力（日単位）を登録すると、勤怠データ（月単位：サブテーブルあり）にある日報入力で入力した日付の明細行のフラグを更新しています。

サブテーブル内の指定行の値は更新されたのですが、それ以外の明細データが削除されてしまいました。

すみませんが、どこが悪いのか修正箇所をご教授いただけないでしょうか。

よろしくお願いいたします。

&nbsp;

※以下URLを参照し、コードを作成しました。

[https://developer.cybozu.io/hc/ja/articles/200752984-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E6%9B%B4%E6%96%B0%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E6%93%8D%E4%BD%9C%E3%81%AE%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF](https://developer.cybozu.io/hc/ja/articles/200752984-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E6%9B%B4%E6%96%B0%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E6%93%8D%E4%BD%9C%E3%81%AE%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF)

&nbsp;

==========================================================================

&nbsp;

// \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
// \*\*\*\*\* 保存ボタン正常後イベント  
// \*\*\*\*\* 作業日報を基に勤怠データの指定日のフラグを更新  
// \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
kintone.events.on([“app.record.create.submit.success”, “app.record.edit.submit.success”], function(event) {

// 画面で入力した日付より年月及び日を分割取得  
var i\_YM = cutByte(event.record.年月日.value,1,6);  
var i\_D = cutByte(event.record.年月日.value,7,2);

return new kintone.Promise(function(resolve, reject) {  
//勤怠入力のデータ確認  
var param1 = {  
app: Attendance\_Input\_APPID,  
query: ‘社員番号 = "’ + event.record.社員番号.value + ‘" and 年月 = "’ + i\_YM + ‘"’  
};

kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, param1, function (resp1) {  
if (resp1.records.length !== 0){  
resolve(resp1);  
} else {  
alert(‘勤怠入力の読込みに失敗しました。’);  
resolve(false);  
}  
});  
}).then(function(resp1) {  
// 更新行を算出  
var mainkey = resp1.records[0].主キー.value;  
var tableRecords = resp1.records[0].明細.value;  
var lineId = tableRecords[Number(i\_D - 1)].id;

var param2 = {  
“app” : Attendance\_Input\_APPID,  
“updateKey” : {  
“field” : “主キー”,  
“value” : mainkey  
},  
“record” : {  
“明細”: {  
“type”: “SUBTABLE”,  
“value”: [  
{  
“id”: lineId,  
“value”: {  
“日報FLG”: {  
“type”: “SINGLE\_LINE\_TEXT”,  
“value”: “済”  
}  
}  
}  
]  
}  
}  
};

//勤怠入力のフラグ更新  
kintone.api(kintone.api.url(‘/k/v1/record’, true), ‘PUT’, param2).then(function (resp2) {  
resolve(event);  
}, function(error) {  
alert(‘勤怠入力の書込みに失敗しました。’&nbsp;);  
resolve(false);  
});  
});  
});

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1821](https://avatars.discourse-cdn.com/v4/letter/l/d07c76/32.png) [@Legacy\_Account1821](https://community.cybozu.dev/u/Legacy_Account1821)\
**Post date:** [2018 年 11 月 15 日午前 2:00 UTC](https://community.cybozu.dev/t/topic/3530/2 "2018-11-15T02:00:49Z")

</div>

isozumiさん

こんにちは。

サブテーブルの更新は、更新されたデータでテーブルが書き換えられてしまう（[参考](https://community.cybozu.dev/hc/ja/articles/200752984-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E6%9B%B4%E6%96%B0%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E6%93%8D%E4%BD%9C%E3%81%AE%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF)）ため、

以下のような手順になるかと思います。

1. テーブルデータ全件取得
2. 該当する行のデータを更新（JSONを編集）
3. 更新行を含むテーブル全件データでレコードを更新

[こちらのスレッド](https://community.cybozu.dev/hc/ja/community/posts/115000229246-%E5%88%A5%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AB%E3%81%82%E3%82%8B%E3%82%B5%E3%83%96%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E5%86%85%E3%81%AE%E7%89%B9%E5%AE%9A%E8%A1%8C%E3%81%AE%E7%89%B9%E5%AE%9A%E9%A0%85%E7%9B%AE%E3%81%A0%E3%81%91%E6%9B%B4%E6%96%B0%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)も参考にしてみてください。

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![Legacy\_Account777](https://avatars.discourse-cdn.com/v4/letter/l/977dab/32.png) [@Legacy\_Account777](https://community.cybozu.dev/u/Legacy_Account777)\
**Post date:** [2018 年 11 月 15 日午前 2:32 UTC](https://community.cybozu.dev/t/topic/3530/3 "2018-11-15T02:32:22Z")

</div>

松田さん

ご返事有難うございました。

（参考）の「テーブルの1行の特定のフィールドのみを更新する」の「注意事項」に記述がありました。

&nbsp;
