対象製品とバージョン:Forguncy 3.0.105.0以降のすべてのバージョン3
Forguncyが提供する複数レコードの一括更新用のWeb APIである「modifyTablesData」は、一意のキーを指定して1レコードずつ削除していく必要があります。このためマスターテーブルに関連付いたすべての詳細テーブルを、マスターを削除した際に一緒に削除したい場合、一旦リストビューに取り込んで、一意となるキーを取得したものを該当レコード件数分実行するといったJavaScriptを記載する必要があります。
ページ末尾のサンプルプロジェクトを、参照してください。
サンプルプロジェクトでは、以下のことを行っています。
(1)リストビューを2つ配置し、マスターテーブルと明細テーブルをそれぞれ関連付けます。
(2)各リストビューのクエリを指定します。
(3)明細テーブルに関連付けたリストビューを右クリックし「詳細リストビューとして設定」を指定します。
(4)セルに名前をつけます。(サンプルでは、deleteNo、deleteKbn)
(5)明細テーブルのリストビューのセルに名前をつけます。(サンプルでは、ID)
(6)ボタンを配置し「JavaScriptコードの実行」コマンドで以下のように記載します。
var deleteNo = Forguncy.Page.getCell("deleteNo").getValue();
var deleteKbn = Forguncy.Page.getCell("deleteKbn").getValue();
var detailListView = Forguncy.Page.getListView("リストビュー2");
var detailTableDeleteRows = [];
for (var rowIndex = 0; rowIndex < detailListView.getRowCount(); rowIndex++) {
var cell = detailListView.getValue(rowIndex,"ID");
detailTableDeleteRows.push({ "ID": cell });
}
Forguncy.modifyTablesData(
{
"注文書テーブル": {
deleteRows: [{"注文No": deleteNo ,"注文区分": deleteKbn },]
},
"注文書テーブル_詳細": {
deleteRows: detailTableDeleteRows
},
},
function (data) { // レコードの削除に成功した場合
//alert("レコードが削除されました。");
},
function (errorMessage) { // レコードの削除に失敗した場合
alert(errorMessage);
}
);
参考情報
Forguncy 4 では機能強化によって、内部データベースの場合に限り、テーブル設定時に削除方法を指定できるようになっています。また上記記載のリストビューの「getValueメソッド」は列名ではなくインデックスも指定できるようになりました。詳細については、Forguncy 4の以下のナレッジを参照してください。
マスターテーブルとマスターテーブルに関連付いたすべての詳細テーブルを削除する(Forguncy 4)
検索キーワード: fgchowto fgcdevelopment fgcdatabase