GetEntityDefOfName

説明

「レコードの検索」の機能を提供します。指定されたレコード表示名の EntitiyDef オブジェクトを戻します。 このメソッドでは、その表示名を検索するときの EntityDef タイプと EntityDef 名 (オプション) を指定する必要があります。

entDefNames の配列では、複数のレコード タイプでの検索が可能なので、どのレコード タイプが一致したかを見極めるために、戻された EntityDef タイプを確認する必要があります。また、entityDeftype 引数として ANY_ENTITY を使用する場合は、戻されたレコードが、状態あり (REQ_ENTITY) レコードか、状態なし (AUX_ENTITY) レコードかを判別する必要があります。

指定の表示名あるいは DBID を持つエンティティがデータベースに存在している場合は、GetEntityDefOfName と GetEntityDefOfDbId のどちらを呼び出してもかまいません。一度、EntityDef がわかれば、Session オブジェクトの GetEntity メソッドを呼び出して、エンティティを取得することができます。

表示名の代わりにデータベース ID を使用してレコード タイプを要求するには、GetEntityDefOfDbId を使用します。

注: GetEntityDefNames メソッドからの戻り値を使用するときは、戻された項目のリストの順序をソートしてから、GetEntityDefOfDbId および GetEntityDefOfName メソッドに対する引数として、そのリストを使用してください。リスト順序をソートすることで、すべてのデータベース ベンダーについて一貫した結果が得られるようになります。

表示名と一意のキーに関する詳細は、 「レコード タイプ」を参照してください。

注: このメソッドは、バージョン 7.0.1 で使用可能になりました。

構文

VBScript

session.GetEntityDefOfName(display_name, entitydef_names,entitydef_type ) 

Perl

$session->GetEntityDefOfName(display_name, entitydef_names,entitydef_type); 
識別子
説明
session
現在のデータベース アクセス セッションを表す Session オブジェクト。
display_name
状態あり (REQ) レコード タイプの場合、表示名は、そのレコードの表示 ID (例えば、DEF00013323) である必要があります。 状態なし (AUX) レコード タイプの場合、表示名は、一意のキー フィールドである必要があります。
entitydef_names
要求したレコードの検索に使用するレコード タイプの名前を指定します。

Visual Basic の場合、文字列の配列を含む Variant。 各文字列には、EntityDef 名が含まれます。

Perl の場合は、文字列の配列への参照。各文字列には、EntityDef 名が含まれます。

EntityDef の名前を使用して、表示名または DbId で識別されるエンティティが検索されます。 EntityDef 名のリストが、指定の順序で繰り返し処理されます。entDefNames 引数に指定された EntityDef 名に無効なものがあると、無効な名前があることを確認したという例外がスローされます。配列値が空で指定された場合、スキーマに定義されているすべての EntityDef タイプが使用されます。そのときの検索順序は、最もよく検出される EntityDef から始めて、最も検出されない EntityDef が最後になります。

entitydef_type
EntityType の列挙型定数 (REQ_ENTITY、 AUX_ENTITY、または ANY_ENTITY) の 1 つである Long。ANY_ENTITY が使用されると、まず、REQ タイプが確認されて、一致するものがない場合に、AUX タイプが確認されます。
戻り値
エンティティが検出された場合は、依頼されたレコードに対応する EntitiyDef オブジェクトを戻し、エンティティが検出されない場合は、NULL を戻します。entDefNames 引数に無効な EntityDef 名が含まれていた場合は、例外をスローします。

Perl

use CQPerlExt; 

 # Build session...
 # Log in...'Session UserLogon method'

 # Determine the array of Entity Def Names for searching...
 eval { $entDefNamesDB = $CQSession->GetEntityDefNames(); };

 # Sort the list of entity def names returned from GetEntityDefNames()
 @entDefNamesDBsorted = sort @$entDefNamesDB;
 $entDefNamesDBsorted = ¥@entDefNamesDBsorted;
 # EntityDef Names can be supplied by the user. For example:
 # @entDefNamesUser = ($ARG{'EDEF1'},$ARG{'EDEF2'},$ARG{'EDEF3'});
 # $entDefNamesUser = ¥@entDefNamesUser;
 # if using user supplied EntityDef Names for searching then
 # $entDefNames = $entDefNamesUser;
 # else use all DB EntityDef names for searching:
 $entDefNames = $entDefNamesDBsorted;

 # Call CQSession->GetEntityDefOfName()...
 #my($dName) = substr($ARG{'DATABASE'}.$ARG{'RECORDNAME'}, 5);
 my($dName) = $ARG{'ID'};
 eval { $CQEntityDefOfName = $CQSession->GetEntityDefOfName($dName, $entDefNames, $ARG{'ENTTYPE'}); };
 # exception handling goes here...

 # Get the Entity Def Name of the record...
 eval { $CQEntityDefName =  $CQEntityDefOfName->GetName(); };
 # exception handling goes here...

 # Get entity...

フィードバック