インスタンス・リストに11個以上の英数字列または11個以上の数値列を追加する

Visual LANSA

インスタンス・リストに11個以上の英数字列または11個以上の数値列を追加する


フレームワークのインスタンス・リストは、英数字列または数値列をそれぞれ10個まで追加して表示できます。これ以上の列を追加する場合、独自のスナップイン・インスタンス・リストを作成する必要があります。  スナップイン・インスタンス・リスト・ブラウザーでは表示可能な追加列数に制限はありません。

インスタンス・リストを作成するには、コード ウィザードを使用して最も必要とされるコードを作成します。実施例はコンポーネントDF_INST1に含まれています。

インスタンス・リスト・ブラウザーは、ビジネス・オブジェクト・プロパティタブのインスタンスリストリレーションシップ概要 にスナップインされています。

 無限の数の列をインスタンス・リストに効果的に追加できる最も簡単なテクニックは、インスタンス・リスト・マネージャーのAColumn<シンボリック名>(値)プロパティとNColumn<シンボリック名>(値)プロパティを使用することです。

(:実際、これは、AddtoListメソッドの新しいAColumnN()パラメータとNColumnN()パラメータがよく使用されるようになったため、時間と共に使用されなくなった古いテクニックです。これは、追加の列を使用できるただ1つの方法でした)。  

以下はサンプル・フィルターの該当箇所を抜き出したRDMLXコードです。

* Make 16 alphanumeric columns with a variety of symbolic names such as BILL, MARY .. A16

  

set #avListManager AColumn<BILL>(#Char07 + BILL)

set #avListManager AColumn<MARY>(#Char07 + MARY)

set #avListManager AColumn<TOTAL>(#Char07 + TOTAL)

set #avListManager AColumn<CUSTNO>(#Char07 + CUSTNO)

set #avListManager AColumn<A5>(#Char07 + A5)

set #avListManager AColumn<A6>(#Char07 + A6)

set #avListManager AColumn<A7>(#Char07 + A7)

set #avListManager AColumn<A8>(#Char07 + A8)

set #avListManager AColumn<A9>(#Char07 + A9)

set #avListManager AColumn<A10>(#Char07 + A10)

set #avListManager AColumn<A11>(#Char07 + A11)

set #avListManager AColumn<A12>(#Char07 + A12)

set #avListManager AColumn<A13>(#Char07 + A13)

set #avListManager AColumn<A14>(#Char07 + A14)

set #avListManager AColumn<A15>(#Char07 + A15)

set #avListManager AColumn<A16>(#Char07 + A16)

 

* Make 16 numeric columns with a variety of symbolic names such as BILL, MARY ... N16

 

set #avListManager nColumn<BILL>(#Zone07 + 1)

set #avListManager nColumn<MARY>(#Zone07 + 2)

set #avListManager nColumn<TOTAL>(#Zone07 + 3)

set #avListManager nColumn<CUSTNUM>(#Zone07 + 4)

set #avListManager nColumn<n5>(#Zone07 + 5)

set #avListManager nColumn<n6>(#Zone07 + 6)

set #avListManager nColumn<n7>(#Zone07 + 7)

set #avListManager nColumn<n8>(#Zone07 + 8)

set #avListManager nColumn<n9>(#Zone07 + 9)

set #avListManager nColumn<n10>(#Zone07 + 10)

set #avListManager nColumn<n11>(#Zone07 + 11)

set #avListManager nColumn<n12>(#Zone07 + 12)

set #avListManager nColumn<n13>(#Zone07 + 13)

set #avListManager nColumn<n14>(#Zone07 + 14)

set #avListManager nColumn<n15>(#Zone07 + 15)

set #avListManager nColumn<n16>(#Zone07 + 16)

 

* Add this and all 32 additional columns to the instance list

 

Invoke Method(#avListManager.AddtoList) Visualid1(#Char07) Visualid2(#char07) Akey1(#char07)

 

たとえば、set #avListManager AColumn<CUSTNO>(#Char07 + CUSTNO)の行では、CUSTNOというシンボリック名の英数字列が作成され、その列にフィールド#CHAR07の現在の値と文字列'CUSTNO'を連結した値を含めるよう設定されます。

関連するスナップイン・インスタント・リスト・マネージャーの中で、これはマッチングRDMLXコードです。

* Set the visual identifiers into the grid columns

 

#STD_TEXTS := #VisualID1

#STD_TEXT := #VisualID2

 

* Get the additional alphanumeric columns into the grid columns.

* Only 3 are visualized in this example, but all 16 could be display if required

 

#VF_ELXA01 := #AvListManager.Acolumn<BILL>

#VF_ELXA02 := #AvListManager.Acolumn<CUSTNO>

#VF_ELXA03 := #AvListManager.Acolumn<A16>

 

* Get the additional numeric columns into the grid columns.

* Only 3 are visualized in this example, but all 16 could be visualized if required

 

#VF_ELXNK1 := #AvListManager.Ncolumn<BILL>

#VF_ELXNK2 := #AvListManager.Ncolumn<CUSTNUM>

#VF_ELXNK3 := #AvListManager.Ncolumn<N16>

 

* Add the information to the grid

 

Add_Entry #GRID

 

#VF_ELXA02 := #AvListManager.Acolumn<CUSTNO>の行では、CUSTNOという名前の追加の英数字列が表示され、グリッド列フィールド#VF_ELXA02にコピーされます。  

コマンド・ハンドラーでも同じ手法を使用して追加列にアクセスできます。

大量の追加列を使用して大量のデータ交換を行う場合、より「固定された」(つまり汎用性がないため高速な)手法が考えられます。これを使用して、追加列の情報をフィルターとインスタンス・リスト・ブラウザー間で受け渡すことができます。 

たとえば、1つの追加列のみを使用して、フィルターと、インスタンス・リスト内のスナップイン・インスタンス・リスト・ブラウザーとの間で「行キー」を受け渡すことができます。固有のScope(*Application)を共有する再利用可能なVLコンポーネントを作成すれば、情報のストレージの管理と、情報の論理行へのアクセスを行うことができます。また、効率を高めるためにSPACEオブジェクトを使用することもできます。フィルターとインスタンス・リスト・ブラウザーはこれとやり取りを行い、論理行の詳細を交換できます。     

34個の列(16個の英数字、16個の数値+ビジュアルID)を使用するサンプル・フィルター

スナップイン・インスタンス・リスト・ブラウザーのマッチング