こちらの記事(別アプリにテーブルをコピーしたレコードを追加する)では、別アプリには常にレコードを追加する方法になりますが、実際に利用する場面では、既に登録済みのレコードに対しては更新したいこともあるかと思います。
今回は、「発注コード」をキーとして、既にレコードが追加されている場合は、テーブルの更新を行い、まだレコードが追加されていない場合は、テーブルを含めたレコード追加を行うカスタマイズを作成します。
基本的な流れは、こちらの記事(別アプリにテーブルをコピーしたレコードを追加する)と同じですので、違う点について細かく説明します。
利用している、購買部用商品発注アプリ、商品検収アプリのアプリ構成はまったく同じです。
購買部用商品発注アプリ
商品検収アプリ
やりたいこと
「購買部用商品発注」アプリの詳細画面に「発注完了・検収データ作成」ボタンを追加し、ボタンをクリックすると「商品検収」アプリにテーブルの内容も含めたレコードを追加または更新する。
詳細画面上部に「発注完了・検収データ作成」ボタンを配置する
詳細画面でボタンを押すと別アプリ(「商品検収」アプリ)にレコード追加されるようにしたいので「ボタンをメニュー位置に配置する」を選択します。
詳細画面を開いた時にボタンを表示したいので、条件は「詳細画面を表示した時」を指定します。
レコードを追加して良いか確認するダイアログを表示する
利用者に確認してからレコードを追加したいので「確認ダイアログを表示する」を指定します。
詳細画面上部に表示したボタンを押したときに処理を行いたいので、条件は「ボタンを押した時」を指定します。
購買部用商品発注アプリのテーブルをレコードとして取得する
「購買部用商品発注」アプリで、詳細画面を開いているレコードのテーブルを取得します。
その際、テーブルのデータを扱いやすくするためにレコードとして取得したいので「テーブル行をレコードとして取得する」を指定します。
ダイアログで「OK」が押された時だけ続きの処理を行いたいので、条件は「確認・入力ダイアログで「OK」を押した時」を指定します。
商品検収アプリに既に登録されているかどうか確認する
「発注コード」をキーに、「商品検収」アプリのレコードを取得します。取得したレコードの件数が0件の場合はまだ登録されていない事が判断でき、逆に取得したレコードの件数が1件以上の場合はすでに登録済みな事が判断できます。
商品検収アプリにレコードを追加しつつテーブルもコピーする
「購買部用商品発注」アプリの値を、テーブルも含めて「商品検収」アプリの新しいレコードにコピーしたいので「テーブルデータをセットしたレコードを追加する」を指定します。
「購買部用商品発注」アプリの明細テーブルをレコードに変換するアクションが完了してから処理を行いたいので、条件は「他のアクションの実行が完了した時」を指定し、追加条件として4番の取得結果の「レコード件数が0件ならば」を指定します。
商品検収アプリに既にレコードが登録されている場合は、テーブル行を丸ごと更新する
すでにある「商品検収」アプリのレコードに、「購買部用商品発注」アプリのテーブルの値をコピーしたいので「レコードを指定アプリのテーブルに書き出す」を指定します。「既存のテーブル行はクリアする」に指定すると、既存のテーブルの内容がクリアされ、今回のテーブルの値で上書き更新します。
「購買部用商品発注」アプリの明細テーブルをレコードに変換するアクションが完了してから処理を行いたいので、条件は「他のアクションの実行が完了した時」を指定し、追加条件として4番の取得結果の「レコード件数が1件以上ならば」を指定します。
まとめ
カスタマイズの全体図はこちら
4番の結果で5番と6番のアクションに分岐するので、アクショングラフはこのようになります。