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