最近のアクセス:
Update ルール

Transaction オブジェクトのどのベーステーブルにも格納されない項目属性を編集または更新できます。

構文

Update(att1, ..., attn);
入力値の説明:

att1, ..., attn: 拡張テーブルに属する項目属性です。

適用範囲

オブジェクト: Transaction オブジェクト

説明

このルールを使用することで、Transaction オブジェクトのどのベーステーブルにも格納されない項目属性を編集または更新できます。
トランザクションレベルの場合、編集できる項目属性は、そのレベルのベーステーブルに格納されたもののみです。たとえば、Invoice トランザクション内では、フォーム内に CustomerName を格納できますが、編集することはできません。Invoice フォーム内で編集可能な Customer 項目属性は、CustomerId のみです。これは、この項目属性が Invoice テーブルに格納されるためです。
Invoice フォーム内で CustomerName を編集する手段が欲しいというニーズに応じて、Update() ルールが導入されました。 
これは、条件のないルールです。そのため、特定の項目属性の編集を条件付きで許可するには、NoAccept ルールと組み合わせる必要があります。

次の例に、Update ルールの標準的な使用方法を示します。CustomerAddressLastShipment 項目属性を含む Customer トランザクションおよび Invoice トランザクションがあるとします。
Invoice
{
    InvoiceNumber*
    InvoiceDate
    CustomerId
    CustomerName
    CustomerRUT
    CustomerAddressLastShipment
    InvoiceLastNumber
    }
         ProductId*
         ProductDescription
         ProductPrice
         InvoiceLineQtty
         InvoiceLineTotal
    }
}
Customer
{
    CustomerId*
    CustomerName
    CustomerRUT
    CustomerAddress
    CustomerAddressLastShipment
    CustomerMail
    CustomerBalance
    CustomerPhone
}
CustomerAddressLastShipment 項目属性は Customer テーブルから推論され、読み取り専用モードで画面に表示されます。ただし、発送先住所が変更された場合は、このルールで解決できます。
Update(CustomerAddressLastShipment);
オペレーターが住所を変更した場合、この新しい情報は Customer テーブルに格納されます。
イメージ:21437.png
検討事項:
  • トランザクションには 1 つまたは複数の Update ルールを含めることができます。これらの記述方法についての推奨は特にありません。
  • このルールによって発生する (既に承認された項目属性の参照に対してなどの) エラーや警告はありません。
  • 更新モードでのルールの動作に関する考慮事項は、次のとおりです:
推論された項目属性を決定する外部キーが変更される可能性があり (つまり、外部キーがベーステーブルの主キーに属していない)、その外部キーが別のトランザクション、または作業単位内で変更された場合、元の外部キーの値の、推論された項目属性の値は復元されません。この概念について、次の例で説明します:
次の 2 つの関連付けられたトランザクションがあるとします: Customer、Invoice。CustomerCode は Invoice 内の外部キー (FK) であり、次のルールが適用されています:
Update(CustomerName);
CustomerCode = 1 の 1 番目の Invoice が含まれており、このとき CustomerName = "Customer_x" です。CustomerName の値が 1 番目の Invoice (正確には Customer のテーブル) 内で「Customer_new」に変更され、この Invoice が確定されます。
その後、新しい LUW 内で、1 番目の Invoice の CustomerCode が、CustomerCode = 2 などの別の値に変更されます。この変更によって 1 番目の Customer の CustomerName が元の値に戻されることはありません。







サブページ
Created: 15/01/07 22:47 by Admin Last update: 23/02/13 20:09 by Admin
カテゴリ
Powered by GXwiki 3.0