Visual LANSA フレームワーク ガイド > フレームワーク・プログラミング > コード・テーブル > よくある質問 (コード・テーブル)

よくある質問 (コード・テーブル)

Q: コード・テーブルは実データベース・テーブルですか。

A:いいえ、コード・テーブルは抽象あるいは概念的な定義にすぎません。フレームワークにコード・テーブル内の列を定義し、どの定義がコード・テーブルの行の固有のキーになるかを指定します。テーブル・データは頻繁に実データベース・テーブルに保存されますが、このデータベース・テーブルは他のテーブルと共有される場合があります。

Q: コード・テーブル内のデータはどこから取得するのですか。

A:データはいろいろなところから取得できます。省略値でフレームワークに組み込まれている RDML ファンクションが、内部の単体データベース・テーブルにコード・テーブルのデータを保存します。しかし、コード・テーブル・データを好きなところから取得するデータ保存ファンクションを用意することができます。このタイプのファンクションはテーブル・データ・ハンドラーファンクションとして参照されます。

Q: どうすればデータ保存ファンクションを作成できますか。   

A:テーブル・データ・ハンドラーファンクションは定義済みのプロトコルでフレームワークと通信する標準LANSA RDMLファンクションです。テーブル・データ・ハンドラーファンクションを作成したい場合は、プロセスUF_SYSBR、ファンクションUFU0010~UFU0015を例として参照してください。

Q: データ保存ファンクションはエンドユーザーと対話処理ができますか。

A: いいえ。データ保存ファンクションは、異なるさまざまなコンテキストで稼動するデータ取得/更新ルーチンとして作動するよう設計されています。例えば、Windosベースのフレームワーク・アプリケーションからリモート・プロシージャとして呼び出すことができます。またリモート・サーバーでは、ブラウザ・ベースのアプリケーションの一部として呼び出すことができます。これは、コンテキストがユーザー・インターフェースが使用できない状態で実行する必要があることを意味しています。

Q: コード・テーブルを使用する利点とはなんですか。

A: フレームワーク・コード・テーブル・システム機能を使用する最大の利点は、生産性と一貫性の向上です。標準の組み込みアーキテクチャでコード・テーブルを保守することで、アプリケーションの開発と保守がより迅速になり、コストとコード・テーブル・システム開発の複雑さが軽減されます。 

 

Q: どうすればフレームワーク汎用テーブル・データ・テーブル (FPTAB) で外部 LANSA ファンクションをインターフェースできますか。

A: FPTABのデータは特殊で、テーブルのキー以外の各セルごとにレコードを1つ含んでいます。

例えば、オーストラリアの州のテーブルには、以下のようなフィールドがあります。

CODE (a key)

DESCRIPTN

MYSEQ

 

FPTABの各州は2つのレコードで表します。1つはDESCRIPTNでもう1つはMYSEQです。どちらのレコードもすべてのキー・データ(この場合はCODE)を含みます。

Akey1 (FP_EKEY1) NKey1(FP_EKEYN1) その他のキー2 - 5。 プロパティ名(FP_EPTNAM) アルファベット・プロパティ値(FP_EPTVAL) 数値プロパティ値(FP_EPTNV)

NSW

 

 

DESCRIPTN

New South Wales

 

NSW

 

 

MYSEQ

 

10

QLD

 

 

DESCRPTN

Queensland

 

QLD

 

 

MYSEQ

 

20

...

 

 

 

 

 

 

 

 

 

 

 

 

ユーザーが入力した通貨コードが有効か調べたい

*インデックス (kya) の使用 

*キー: テーブル名, AKey1, Nkey1, AKey2, Nkey 2, Akey3, Nkey3 ..., フィールド名  

 

CHECK_FOR in_file(FPTABkya) with_key('VF_CURRENCY' #MyCurrencyCodeField)

IF_STATUS *EQUALKEY

 

ENDIF

 

ある場所から読み出した通貨コードの説明を表示したい

*インデックス (nma) の使用 

*キー: テーブル名、フィールド名、AKey1, Nkey1, AKey2, Nkey 2, Akey3, Nkey3 ...  

 

FETCH fields(#FP_EPTVAL)  from_file(FPTABnma) with_key('VF_CURRENCY' 'DESCRIPTN' #MyCurrencyCodeField) 

 

Change #MyDescriptionField #FP_EPTVAL

 

通貨コードと各通貨の取り引き照会をすべて一覧したい

*インデックス (nma) の使用 

*キー: テーブル名、フィールド名、AKey1, Nkey1, AKey2, Nkey 2, Akey3, Nkey3 ...  

 

SELECT *ALL from_file(FPTABnma) with_key('VF_CURRENCY' 'DESCRIPTN') 

 

(assuming that there is always a DESCRIPTN for a CURRENCY)

 

ENDSELECT

 

通貨コードと各通貨の取り引き照会をすべて一覧し、その換算レートと説明を知りたい

*インデックス (nma) の使用 

*キー: テーブル名、フィールド名、AKey1, Nkey1, AKey2, Nkey 2, Akey3, Nkey3 ...  

SELECT *ALL from_file(FPTABnma) with_key('VF_CURRENCY' 'DESCRIPTN') 

Change #MyDescriptionField #FP_EPTVAL

* 数値のセル値を取得
* ポインターの混乱を避けるため、2つ目のインデックスを使用 
FETCH fields(#FP_EPTNV)from_file(FPTABn2a) with_key('VF_CURRENCY' 'EXCHRATE' #FP_EKEY1)

通貨と部門の組み合わせについて報告したい

*インデックス (nma) の使用 

*キー: テーブル名、フィールド名、AKey1, Nkey1, AKey2, Nkey 2, Akey3, Nkey3 ...  

SELECT *ALL from_file(FPTABnma) with_key('VF_CURRENCY' 'DESCRIPTN') 

Change #MyCurrencyCodeField    #FP_EKEY1  
Change #MyCurrencyDescriptionField #FP_EPTVAL

* 全ての部門を読み込み
* ポインターの混乱を避けるため、別の論理ビュー (n2a) を使用 
SELECT *ALL  from_file(FPTABn2a) with_key('VF_DEPTAB' 'DESCRIPTN') 

Change #MyDepartmentCodeField    #FP_EKEY1 
Change #MyDepartmentDescriptionField #FP_EPTVAL


ENDSELECT
ENDSELECT

 

注:キーではないフィールド(例:Description)がすべてのテーブル・タイプの各テーブル・エントリーに必要な場合、コーディングが簡単になります。

数値キーでテーブルからデコードしたい

例えば、キー#POSTCODE (数値)を持つテーブルVF_POSTCODEがあるとします。

*インデックス (nma) の使用 

*キー: テーブル名、フィールド名、NKey1, Akey1, NKey2, Akey 2, Nkey3, Akey3 ...  

FETCH fields(#FP_EPTVAL)  from_file(FPTABnmn) with_key('VF_POSTCODE' 'DESCRIPTN'  #MyPostCodeField) 

Change #MyDescriptionField #FP_EPTVAL

 

複合キーでテーブルからデコードしたい

例えば、キー#POSTCODE (数値)と#COUNTRY(アルファベット)を持つテーブルVF_POSTCODEがあるとします。

 

*インデックス (nma) の使用 

*キー: テーブル名、フィールド名、NKey1, Akey1, NKey2, Akey 2, Nkey3, Akey3 ...  

FETCH fields(#FP_EPTVAL)  from_file(FPTABLnmn) with_key('VF_POSTCODE' 'DESCRIPTN'  #MyPostCodeField *blanks 0 #MyCountryCodeField) 

Change #MyDescriptionField #FP_EPTVAL

 

記述順で部門を一覧したい

*インデックス (val) の使用 ()  

*キー: テーブル名、フィールド名、数値プロパティ値、英字プロパティ値  

SELECT *ALL from_file(FPTABval) with_key('VF_DEPTAB' 'DESCRIPTN') 

(assuming that there is always a DESCRIPTN for a department)

ENDSELECT