シートAのレコードに対して、シートBのレコードの値を基にフィールドの値を更新したい場合、たとえば受注確定後に在庫を減らす処理を行いたいときは、他のフォーム内のフィールド値を更新ボタンを使用できます。
以下は在庫を減らす処理の例です:左側のシートが「受注書」、右側が「製品(受注書)」とします。
「受注書」シートのレコードをもとに「製品(受注書)」シートの在庫を変更したい場合は、「受注書」シート内にボタンを設定する必要があります。フォームページのデザインモードに入り、 フォームツールからカスタムボタンカテゴリ内の他のフォーム内のフィールド値を更新を選択してください。
ポップアップウィンドウから更新対象のシート(例:「製品(受注書)」)を選択し、次に以下の項目を設定します:
・他のフォーム内の値をどのように更新するか
・他のフォーム内の値を更新するための条件
「在庫差し引き」を例として使用します。
データ元フォームで使用するフィールドの値: 数量(これは子テーブルのフィールドです)
更新方法:「-」を選択(在庫差し引きのため。補充する場合は「+」を選択)
更新先フォームで更新するフィールド: 合計数量(在庫数)
複数のフィールドを同時に更新したい場合は、+をクリックして追加してください。
注意: 実行順序は上から下へとなります。
ソースフォームのこのフィールド:製品番号
と
更新するフォームのこのフィールドが等しい場合 :製品番号
条件を複数設定したい場合は、+をクリックして追加できます。すべての条件が満たされた場合にのみ、ボタンが実行されます。
注意:条件の設定が不適切な場合、設定を保存することができません。条件設定時によくあるミスについては、こちらをご参照ください。
設定が完了したら、他のフォーム内のフィールド値を更新のボタンを作成ボタンをクリックし、名前を付けてください。
デザインモードを保存して終了すると、フォームページの右下に追加されたボタンが表示されます。
このボタンを作成すると、システムは自動的にアクションボタンの実行日時を記録する日付と時刻フィールドを生成します。このフィールドはアクションボタンの正しい動作に不可欠なため、削除しないでください。
このアクションボタンを2017年6月1日以降に作成または変更した場合、ユーザーが手動でフィールドの値を変更できないように、このフィールドを閲覧のみに設定することを推奨します。
なお、2023年3月21日以降に作成されたアクションボタンの場合、実行日時フィールドには削除不可の属性が設定されます。このフィールドを削除したい場合は、まず該当のアクションボタンを削除する必要があります。
新しい「受注書」を作成して、「製品(受注書)」シートの値を更新するためのアクションボタンを試すことができます。
「受注書」から表示されるポップアップウィンドウでは、「製品(受注書)」にある「パインキャビネット」の在庫数が46であり、この「受注書」での注文数量(Qty)が3であることが確認できます。
このレコードを保存した後、右下にある出荷実行ボタンをクリックすることができます。
システムは、値が更新されたことを知らせるメッセージを表示し、システム生成の日付・時刻フィールドに自動的に入力します。
「製品(受注書)」内の「パインキャビネット」の数量が3減少し、現在は43になっています。
「出荷実行」を取り消すには、復元アクションボタン(復元ボタンを作成が有効になっている場合のみ表示)をクリックします。クリック後、システムによって生成された日時フィールドの値がクリアされ、「出荷実行」が実行されていない状態であることを示します。
このアクションボタンが2017年6月1日以前に作成され、その後設定が変更されていない場合は、復元アクションボタンの使用方法について本セクションをご参照ください。
注意:は2017年6月1日にアップデートされました。
「他のフォーム内のフィールド値を更新」アクションボタンが2017年6月1日以前に作成・編集されたものである場合は、逆操作を実行する前に、まずシステムによって生成された日時フィールドの値を手動でクリアし、その後復元アクションボタをクリックしてください。
以下は、「逆操作ボタン(復元アクションボタン)」の更新内容の概要です:
旧バージョン:
1. 実行前に「最終実行日時フィールド」が空かどうかをチェック。空であれば実行し、日時を更新する。
2. 連続して逆操作を実行することを防ぐ仕組みがなく、「最終実行日時フィールド」が空であれば何度でもクリック可能。
新バージョン:
1. クリックすると即時実行され、「最終実行日時フィールド」を自動でクリア。
2. 「最終実行日時フィールド」が空の場合、逆操作は実行されず、実行済みとして扱われる(つまり変更なし)。これにより、連続した逆操作の防止が可能に。
高度な設定については、以下の表をご参照ください:
高度な設定 | デフォルト値 | 説明 |
---|---|---|
フォーム内の関数を再計算 | オフ | 他のフォームのフィールド値を更新する際、対象フォームの計算式も再計算する
→ 更新対象フィールドを参照している計算式フィールドがある場合は、このオプションにチェックを入れてください。 |
復元ボタンを作成 | オン | デフォルトで有効。→他のフォーム内のフィールド値を更新ボタンとあわせて、更新を復元するための「更新復元ボタン」も自動的に作成されます。詳細は該当セクションをご参照ください。 |
保存時に自動実行 | オフ | 対象フォームでこのユーザーにアクセス権があるかを確認します。 |
保存時に目標フォームのアクセス権限を確認する | オフ | レコード作成・更新時に自動実行。他のフォーム内のフィールド値を更新を、レコード作成または更新の際に自動的に実行します。常に最新のレコードに基づいて値を更新できます。1つのフォームにつき、自動実行できる「他のフォーム内のフィールド値を更新」ボタンは1つだけ設定可能です。 |
目標フォームの"必須"フィールドを確認する | オフ | 更新対象のフィールドに必須の設定があり、それを空にしようとした場合、エラーメッセージが表示され、更新は実行されません。 |
目標フォーム内のフィールドの"入力チェック"を確認する | オフ | 更新しようとしている値が入力チェックに合致しない場合も、エラーメッセージが表示され、更新は実行されません。 |
実行条件に合致するデータが完全見つからなかった場合、実行失敗と判断される | オフ | 値を更新する条件を満たすフィールドが存在しない場合、エラーメッセージが表示され、更新は実行されません。 |
実行条件に合致するデータが完全見つからなかった場合、警告メッセージを表示する | オン | このオプションはデフォルトで有効になっています。警告メッセージを表示したくない場合は、チェックを外してください。 |
目標フォーム内のフィールドのデフォルト値を読み込む | オフ | このアクションボタンを実行する際に、対象フォームに初期値を入力したい場合は、このオプションにチェックを入れてください。 |
このフォーム内のフィールドのデフォルト値を読み込む | オフ | このアクションボタンを実行する際に、このフォームに初期値を入力したい場合は、このオプションにチェックを入れてください。 |
子テーブルのフィルタ条件を適用する | オフ | 以下の子テーブルのフィルター条件を適用する セクションをご参照ください。 |
実行成功時に提示メッセージを表示する | オン | このオプションは有効のままにしておくことを推奨します。チェックを外すと、処理時間が長い場合に成功したかどうかの判断が難しくなる可能性があります。 |
実行成功時の提示メッセージをカスタマイズする | オフ | チェックを入れると、下に表示されるフィールドにカスタムメッセージを入力できます(文字数制限あり)。 |
レコードに子テーブルフィールドが含まれている場合、特定の条件に一致する子テーブルの値のみを更新するようフィルターを適用できます。
たとえば、「出荷伝票」において、実際に出荷された商品が2件のみであり、子テーブル内に「出荷確定」というフィールドがある場合、アクションボタンの設定で子テーブルのフィルター条件を指定することで対応可能です。
以下の例では、「出荷伝票」に元々3件の商品が含まれていましたが、最終的に出荷されたのは2件のみでした。子テーブル内のフィールドで、どの商品が出荷されたかを示しています:
詳細設定で子テーブルのフィルター条件を適用にチェックを入れてください。
設定された条件に基づき、ボタンを実行すると「確定出荷」とマークされた子テーブルの品目のみが在庫から差し引かれます。
デフォルトでは、各レコードで「他のフォーム内のフィールド値を更新」アクションボタンは一度しか実行できません。重複実行を防ぐために、システム生成の日付&時刻フィールドを確認します。ただし、以下のように再度ボタンを実行する必要があるケースもあります:
通常、このようなケースでは、ボタンの設定が「+追加」または「-差し引き」となっており、ボタンを再実行すると値が繰り返し追加または差し引きされてしまい、不正確な結果につながります。そのため、以下の手順に従うことをおすすめします:
ステップ 1: 復元アクションボタンを実行する
すでに登録されている2件分の在庫差し引き処理を取り消し、重複差し引きを防止します。リバースアクションボタンを実行すると、システムは現在の値に基づいて処理を逆転させます。たとえば、在庫から3個差し引かれていた場合は3個を戻し、システム生成の日付&時刻フィールドをクリアします。
ステップ 2: 子テーブルに3件目の商品を追加し、「在庫差し引き」アクションボタンを再度実行する
通常、ボタンが「=(等しい)」で設定されている場合にこのような状況が発生します。たとえば、直接リンクされていない2つのフォームがあり、フォームAの変更内容を都度フォームBに反映させたい場合は、以下の手順に従ってください:
シナリオ1:保存時にアクションボタンを自動実行する場合
アクションボタン作成時に、詳細設定内の「保存時に自動実行する」オプションにチェックを入れてください。
通常、ボタンが「=(等しい)」で設定されている場合にこのような状況が発生します。たとえば、直接リンクされていない2つのフォームがあり、フォームAの変更内容を都度フォームBに反映させたい場合は、以下の手順に従ってください:
シナリオ1:保存時にアクションボタンを自動実行する場合
アクションボタン作成時に、詳細設定内の保存時に自動実行オプションにチェックを入れてください。
このように設定すれば、シートが更新・保存されるたびにアクションボタンが自動で実行され、対象のシートの値が更新されます。
注意: 1つのシートには、自動実行が設定できるアクションボタンは1種類のみです。複数の更新ボタンがある場合は、他のボタンをシナリオ2のように設定してください。
このように設定すれば、シートが更新・保存されるたびにアクションボタンが自動で実行され、対象のシートの値が更新されます。
注意: 1つのシートには、自動実行が設定できるアクションボタンは1種類のみです。複数の更新ボタンがある場合は、他のボタンをシナリオ2のように設定してください。
シナリオ2: 毎回の更新後にアクションボタンを手動で実行する場合
システムによって生成された実行日時フィールドに "" (空の文字列)という数式を適用し、次回以降の実行時に空欄であれば再実行できるように設定します。
シートを更新した後、アクションボタンを手動でクリックすることで、対象のシートの値を更新できます。
1. 計算処理を行う場合、他のフォーム内のフィールド値を更新アクションボタンで指定する元フィールドと対象フィールドの両方が数値型である必要があります。文字列を入力する場合は「=(等しい)」を使用してください。
2. 少なくとも1組の条件を設定する必要があります。
3. 対象シートの同一フィールドに対して、複数の異なる条件を設定することはできません。
4. システムが自動生成する日時フィールドは削除できません。削除するとアクションボタンが機能しなくなります。ただし、このフィールドの名称を変更したり、非表示にすることは可能です。
5. 旧バージョンでは、他のフォーム内のフィールド値を更新アクションボタンや復元アクションボタンを再度クリックするには、事前にシステム生成の日時フィールドの値をクリアする必要があります。
6. 複数の他のフォーム内のフィールド値を更新アクションを設定している場合、保存時に自動実行を有効にできるのはそのうち1つのみです。
アクションボタンを削除したい場合は、この記事をご参照ください。
また、アクションボタンの使用に関してユーザーのアクセス権を制限するなど、追加設定が必要な場合は、こちらの記事をご参照ください。