0

system.form_status 状態を使用しようとしましたが、いくつかのテキストまたはリスト項目を変更した後に確認すると、system.form_status に変更はありません。「クエリ」メッセージを受け取るだけですが、「変更済み」メッセージを受け取る必要があります。

では、どうすれば問題を解決できますか?前提条件はありますか?

4

2 に答える 2

2

(ベース テーブル ブロック内の) ベース テーブル アイテムを変更すると、ステータスは CHANGED になります。アイテムを変更してもステータスが変わらない場合、それはコントロール アイテムである必要があります。

于 2010-06-14T09:00:14.733 に答える
1

コントロール項目が変更された場合、レコード & ブロック & フォームのステータスは変更されません。

これを回避する 1 つの方法は、アイテムにトリガー (WHEN-VALIDATE-ITEM) を追加して、レコードのステータスを強制的に変更することです。トリガーで、レコード ステータスを「CHANGED」に設定します。新しいレコードを処理するために、いくつかのロジックも必要になる場合があります。たとえば、次のようになります。

IF GET_RECORD_PROPERTY(NAME_IN ('SYSTEM.TRIGGER_RECORD'), 
                       NAME_IN ('SYSTEM.TRIGGER_BLOCK'), 
                       STATUS) = 'QUERY' THEN
   Set_Record_Property (NAME_IN ('SYSTEM.TRIGGER_RECORD'), 
                        NAME_IN ('SYSTEM.TRIGGER_BLOCK'), 
                        STATUS, 
                        CHANGED_STATUS);
ELSIF GET_RECORD_PROPERTY(NAME_IN ('SYSTEM.TRIGGER_RECORD'), 
                          NAME_IN ('SYSTEM.TRIGGER_BLOCK'), 
                          STATUS) = 'NEW' THEN
   Set_Record_Property (NAME_IN ('SYSTEM.TRIGGER_RECORD'), 
                        NAME_IN ('SYSTEM.TRIGGER_BLOCK'), 
                        STATUS, 
                        INSERT_STATUS);
END IF;

または(これはおそらくより良い方法です)、WHEN-VALIDATE-ITEMトリガーで、同じレコードのデータベース項目の値を何らかの値に設定します(他の回答はこちら)。これにより、記録ステータスが自動的に正しく設定されます。

于 2010-06-15T01:27:54.783 に答える