アウトラインにメンバーを追加し、メンバーの属性を設定します。
構文
ESS_FUNC_M EssOtlAddMember ( hOutline, pMemberInfo, hParent, hPrevSibling, phMember );
パラメータ | データ型 | 説明 |
---|---|---|
hOutline; |
ESS_HOUTLINE_T |
アウトラインのコンテキスト・ハンドル。 |
pMemberInfo; |
ESS_MBRINFO_T |
メンバーとその属性を定義しているメンバー情報構造体。 |
hParent; |
ESS_HMEMBER_T |
親のハンドル。このフィールドは、hPrevSiblingフィールドがESS_NULLの場合にのみ使用されます。 |
hPrevSibling; |
ESS_HMEMBER_T |
前の兄弟のハンドル。 |
phMember; |
ESS_PHMEMBER_T |
APIから戻された新規メンバーのハンドル。 |
備考
この関数を呼び出す前に、ESS_MBRINFO_T構造体を作成し、値を入れておく必要があります。
共有メンバーを作成している場合以外、メンバー名は一意である必要があります。
追加されたメンバーの位置は次のようになります:
新規メンバーは、hPrevSiblingメンバーの後に挿入されます。
hPrevSiblingフィールドがESS_NULLである場合、新しいメンバーはhParentによって指定された親の最初の子になります。
hParentおよびhPrevSiblingがESS_NULLである場合、新しいメンバーはアウトラインの最初の次元になります。
共有メンバーを追加するには、次の条件に従います:
共有メンバーはゼロレベル(リーフ・ノード)メンバーである必要があります。(共有メンバーは子を持つことができません。)
実際のメンバーが、次元内にすでに存在している必要があります。
構造体ESS_MBRINFO_TのusShareフィールドをESS_SHARE_SHAREに設定します。
LABELメンバーを追加するには、次の手順に従います:
最初に、ラベル属性を設定せずにメンバーを追加します。
次に、その子を追加します。(ラベル・メンバーには子が必要です。)
次に、EssOtlSetMemberInfo()を使用して、ラベル・メンバーのラベル・タグを設定します。
属性メンバーを追加するには、ESS_MBRINFO_Tのフィールドを次のように設定します:
フィールド |
設定 |
---|---|
usConsolidation |
ESS_UCALC_NOOP |
fTwoPass |
ESS_FALSE |
fExpense |
ESS_FALSE |
usConversion |
ESS_CONV_NONE |
usTimeBalance |
ESS_TIMEBAL_NONE |
usSkip |
ESS_SKIP_NONE |
usShare |
ESS_SHARE_DYNCALCNOSTORE |
usStorage |
ESS_DIMTYPE_SPARSE |
usCategory |
ESS_CAT_ATTRIBUTE |
usStorageCategory |
ESS_STORECAT_ATTRIBUTE |
Attribute.usDataType |
属性次元またはゼロレベル(リーフ・ノード)の属性メンバーについては、次のデータ型のいずれかを設定します:
そのかわりに、ESS_ATTRMBRDT_AUTOにゼロレベル(リーフ・ノード)属性メンバーを設定できます。 0レベルでない属性メンバーは、ESS_ATTRMBRDT_NONEまたはESS_ATTRMBR_AUTOに設定できます。 |
ESS_ATTRMBRDT_STRING型でないゼロレベルの属性メンバーが追加されると、ESS_MBRINFO_T構造体のszMemberフィールドは、ESS_ATTRSPECS_T構造体のアウトラインの指定により、属性メンバーのロング名に設定されます。
属性次元のみでなく属性メンバーにもusCategoryおよびusStorageCategoryを設定する必要があります。(基本メンバーにはusCategoryおよびusStorageCategoryを設定する必要はありません。基本次元のみに対して設定する必要があります。)
ESS_MBRINFO_T構造体のszDimNameフィールドを設定しないでください。
タイプがESS_ATTRMBRDT_STRINGでない0レベル属性メンバーには、ESS_ATTRIBUTEVALUE_T構造体のAttribute.valueフィールドを設定しないでください。属性値は、属性メンバーのロング名を変換して内部で導出されます。
属性メンバーのデータ型をESS_ATTRMBRDT_AUTOに設定する場合、Essbaseによって次のことが行われます:
メンバー名がその型の値に変換できる場合、メンバーのデータ型をその次元のデータ型に設定します。
メンバー名を次元のデータ型の値に変換できない場合は、メンバーのデータ型をESS_ATTRMBRDT_NONEに設定します。
ESS_ATTRMBRDT_AUTOからESS_ATTRMBRDT_NONE以外のデータ型に変換された最初の子メンバーについては、親のロング名をショート名に変換します。
次元を追加する場合:
属性次元を追加するには、EssOtlAddDimension()を呼び出します。EssOtlAddMember()を呼び出さないでください。
属性次元でない次元を追加するには、EssOtlAddDimension()またはEssOtlAddMember()を呼び出します。
EssOtlAddDimension()によって、追加された次元メンバーを選択し、既存の次元と関連するデータ値にそれを割り当てることができます。
EssOtlAddMember()が使用される場合は、追加された次元の上位メンバー(次元)が既存の次元と関連するデータ値に割り当てられます。
戻り値
正常終了の場合は0が戻されます。それ以外の場合は、次のいずれかの値が戻されます:
OTLAPI_BAD_CONSOL
OTLAPI_BAD_MBRNAME
OTLAPI_ERR_ADDNAMEUSED
OTLAPI_ERR_BADSHARE
OTLAPI_ERR_BADSKIP
OTLAPI_ERR_BADSTORAGE
OTLAPI_ERR_BADSTORAGECATEGORY
OTLAPI_ERR_BADTIMEBAL
OTLAPI_ERR_CURTOOMANYDIMS
OTLAPI_ERR_ILLEGALBOOLEAN
OTLAPI_ERR_ILLEGALCURRENCY
OTLAPI_ERR_ILLEGALDATE
OTLAPI_ERR_ILLEGALNUMERIC
OTLAPI_ERR_ILLEGALTAG
OTLAPI_ERR_LEAFLABEL
OTLAPI_ERR_NOSHAREPROTO
OTLAPI_ERR_NOTIMEDIM
例
#include <essapi.h> #include <essotl.h> ESS_STS_T sts = 0; ESS_OBJDEF_T Object; ESS_HOUTLINE_T hOutline; ESS_MBRINFO_T MbrInfo; ESS_HMEMBER_T hMemberProfit; ESS_HMEMBER_T hNewMember; ESS_APPNAME_T szAppName; ESS_DBNAME_T szDbName; ESS_OBJNAME_T szFileName; memset(&Object, '\0', sizeof(Object)); Object.hCtx = hCtx; Object.ObjType = ESS_OBJTYPE_OUTLINE; strcpy(szAppName, "Sample"); strcpy(szDbName, "Basic"); strcpy(szFileName, "Basic"); Object.AppName = szAppName; Object.DbName = szDbName; Object.FileName = szFileName; sts = EssOtlOpenOutline(hCtx, &Object, ESS_TRUE, ESS_TRUE, &hOutline); if (!sts) { sts = EssOtlFindMember(hOutline, "Profit", &hMemberProfit); } if (!sts && hMemberProfit) { memset(&MbrInfo, '\0', sizeof(MbrInfo)); strcpy(MbrInfo.szMember, "Inventory"); sts = EssOtlAddMember(hOutline, &MbrInfo, ESS_NULL, hMemberProfit, &hNewMember); }
関連トピック