最近のアクセス:
[Business Component] プロパティ

任意のオブジェクトからデータベースを更新する際に、「Silent」モード (フォームを表示しない) でトランザクションを実行できるようにします。

False
True

適用範囲

オブジェクト: Transaction
ジェネレーター: .NET.NET FrameworkAndroidAppleJava

説明

ビジネスコンポーネントを使用する主なメリットは、任意の GeneXus オブジェクトからデータベースを更新できること、およびトランザクションが実行されたときに実行されるのと同じコントロールを実行できることです。
このプロパティの既定値は False です。

トランザクションの [ Business Component ] プロパティを True に設定すると、トランザクションと同じ名前の新しいデータタイプがナレッジベースに作成され、この新しいデータタイプに基づく変数を任意のオブジェクトで定義できます。
たとえば、Customer トランザクションをビジネスコンポーネントとして定義する ( [ Business Component ] プロパティを True に設定する) とします。
イメージ:23116.png
このプロパティを True に設定すると、Customer という名前のビジネス コンポーネント データタイプがナレッジベースに自動的に作成されます。そうすると、下の Web パネルの例に示すように、任意のオブジェクトに新しいデータタイプに基づく変数を定義できます。
イメージ:23117.png
ビジネス コンポーネント データ タイプに基づく変数 (この例では &customer) には、トランザクションの項目属性に対応する一連のプロパティが与えられます (これにより、値を割り当てることができます)。
また、ビジネスコンポーネントの変数に一連のメソッドを適用できます (データベースで挿入や更新などの操作を実行するため)。
重要: ビジネスコンポーネントの変数のプロパティに値を割り当て、メソッドを実行してデータベースを更新した後、データベースに対するすべての操作が一連の論理作業単位 (LUW) を構成すると考えられる範囲について、Commit コマンドをコードに明示的に記述する必要があります。

実行時/設計時

このプロパティは設計時にのみ適用されます。

上記の Customer トランザクションに次のルールが含まれているとします:
イメージ:23170.png 
CustomerId 項目属性で [ Autonumber ] プロパティが [ True ] に設定されているものとします。
次のコード (&Customer 変数が定義されている Web パネルのイベントセクション内) では、&Customer 変数のプロパティ (つまり、Customer 項目属性) に値を割り当てた後、変数に Save メソッドを適用し、最後に Commit コマンドを実行することで、顧客を挿入します:
Event 'Insert customer'

 &Customer=new() //ここでは new 演算子を省略できますが、複数の顧客が挿入される場合は、new 演算子を使用する必要があります
 &Customer.CustomerName = 'John'
 &Customer.CustomerLastName = 'Smith'
 &Customer.CustomerAddress = '165 Ocean Drive'
 &Customer.CustomerEmail = 'jsmith@hotmail.com'
 &Customer.Save()
 if &Customer.Success() 
   commit 
 else 
   msg(&Customer.GetMessages().ToJson()) 
 endif

EndEvent
上記のコードについて説明します。
Save メソッドの実行時:
- Customer トランザクションのルールで定義されている既定のルールがトリガーされ、CustomerAddedDate 項目属性が割り当てられます。
- CustomerId 項目属性は自動ナンバリングされます。
- CustomerPhone が割り当てられていないので、テーブル内の項目属性に値は含まれません (空になります)。
- トランザクションに外部キーとして CountryId 項目属性や CityId 項目属性があり、対応するテーブルに存在しない値をこれらの項目属性に間違って割り当てた場合、Save メソッドで記録しようとしても失敗します。
- モードが更新に変更され、レコードはメモリー内にインスタンスを維持します。
- データベースにアクセスするためのメソッドを適用した後は、必ずエラー処理を行うことをお勧めします。
GeneXus 15 以降では、Save メソッドの代わりに Insert メソッドを使用して同じ顧客情報の挿入を解決することもできます:
Event 'Insert customer'

 &Customer=new() //ここでは new 演算子を省略できますが、複数の顧客が挿入される場合は、new 演算子を使用する必要があります 
 &Customer.CustomerName = 'John' 
 &Customer.CustomerLastName = 'Smith' 
 &Customer.CustomerAddress = '165 Ocean Drive' 
 &Customer.CustomerEmail = 'jsmith@hotmail.com' 
 if &Customer.Insert() 
  commit 
 else
  msg(&Customer.GetMessages().ToJson()) 
 endif 

EndEvent

プロパティの変更の適用方法

プロパティに値を設定したときに、それに対応する変更を適用するには、すべての Transaction オブジェクトをリビルドしてください。


サブページ
Created: 14/09/18 03:47 by Admin Last update: 23/05/08 21:27 by Admin
カテゴリ
Powered by GXwiki 3.0