アウトラインにメンバーを追加し、メンバーの属性を設定します。
構文
EsbOtlAddMember ( hOutline, pMemberInfo, hParent, hPrevSibling, phMember ) ByVal hOutline As Long pMemberInfo As ESB_MBRINFO_T ByVal hParent As Long ByVal hPrevSibling As Long phMember As Long
パラメータ | 説明 |
---|---|
hOutline |
アウトラインのコンテキスト・ハンドル。 |
pMemberInfo |
メンバーとその属性を定義しているメンバー情報構造体。 |
hparent |
親のハンドル。このフィールドは、hPrevSiblingフィールドがESB_NULLの場合にのみ使用されます。 |
hPrevSibling |
前の兄弟のハンドル。 |
phMember |
APIから戻された新規メンバーのハンドル。 |
備考
ESB_MBRINFO_T構造体を作成し、値を入れてから、この関数を呼び出す必要があります。
共有メンバーを作成している場合以外、メンバー名は一意である必要があります。
追加されたメンバーの位置は次のようになります:
新規メンバーは、hPrevSiblingメンバーの後に挿入されます。
hPrevSiblingフィールドがESB_NULLの場合、新規メンバーはhParentで指定した親の最初の子になります。
hParentもhPrevSiblingもESB_NULLの場合、新規メンバーはアウトラインの最初の次元になります。
共有メンバーを追加するには、次の条件に従います:
共有メンバーはゼロレベル(リーフ・ノード)メンバーである必要があります。(共有メンバーは子を持つことができません。)
実際のメンバーが、次元内にすでに存在している必要があります。
ESB_MBRINFO_T構造体のusShareフィールドをESB_SHARE_SHAREに設定します。
LABELメンバーを追加するには、次の手順に従います:
最初に、ラベル属性を設定せずにメンバーを追加します。
次に、その子を追加します。
その後、EsbOtlSetMemberInfo()を使用してラベル・メンバーのラベル・タグを設定します。(ラベル・メンバーには子が必要です。)
属性メンバーを追加するには、ESB_MBRINFO_Tの各フィールドを次のように設定します:
フィールド |
設定 |
---|---|
usConsolidation |
ESB_UCALC_NOOP |
fTwoPass |
ESB_FALSE |
fExpense |
ESB_FALSE |
usConversion |
ESB_CONV_NONE |
usTimeBalance |
ESB_TIMEBAL_NONE |
usSkip |
ESB_SKIP_NONE |
usShare |
ESB_SHARE_DYNCALCNOSTORE |
usStorage |
ESB_DIMTYPE_SPARSE |
usCategory |
ESB_CAT_ATTRIBUTE |
usStorageCategory |
ESB_STORECAT_ATTRIBUTE |
Attribute |
属性値。属性次元またはゼロレベル(リーフ・ノード)の属性メンバーは、次のいずれかのデータ型になります:
属性次元ではなく、属性メンバーの場合: ESB_ATTRMBRDT_NONE = 空を含むそれ以外すべて。 |
ESB_ATTRMBRDT_STRING型でないゼロレベルの属性メンバーを追加すると、ESB_ATTRSPECS_T構造体のアウトラインの指定を使用して、ESB_MBRINFO_T構造体のszMemberフィールドも属性メンバーのロング名に設定されます。
属性次元のみでなく属性メンバーにもusCategoryおよびusStorageCategoryを設定する必要があります。(基本メンバーにはusCategoryおよびusStorageCategoryを設定する必要はありません。基本次元のみに対して設定する必要があります。)
ESB_MBRINFO_T構造体のszDimNameフィールドは設定しません。
ESB_ATTRMBRDT_STRING型でないゼロレベルの属性メンバーには、Attributeフィールドを設定しないでください。属性値は、属性メンバーのロング名を変換して内部で導出されます。
属性メンバーのデータ型をESB_ATTRMBRDT_AUTOに設定した場合、Essbaseは次の処理を実行します:
メンバー名がその型の値に変換できる場合、メンバーのデータ型をその次元のデータ型に設定します。
メンバー名がその次元のデータ型の値に変換できない場合、メンバーのデータ型をESB_ATTRMBRDT_NONEに設定します。
ESB_ATTRMBRDT_AUTOからESB_ATTRMBRDT_NONE以外のデータ型に変換された最初の子メンバーについては、親のロング名をショート名に変換します。
次元を追加する場合:
属性次元を追加するには、EsbOtlAddDimension()を呼び出します。EsbOtlAddMember()を呼び出さないでください。
属性次元でない次元を追加するには、EsbOtlAddDimension()またはEsbOtlAddMember()を呼び出します。
EsbOtlAddDimension()を使用すると、追加された次元の任意のメンバーを選択して、既存の次元に関連付けられているデータ値を割り当てることができます。
EsbOtlAddMember()を使用する場合、既存の次元に関連付けられているデータ値が、追加された次元の最上位メンバー(次元)に割り当てられます。
戻り値
正常終了の場合は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
例
Declare Function EsbOtlAddMember Lib "ESBOTLN" (ByVal hOutline As Long, pMemberInfo As ESB_MBRINFO_T, ByVal hParent As Long, ByVal hPrevSibling As Long, phMember As Long) As Long Sub ESB_OtlAddMember() Dim sts As Long Dim Object As ESB_OBJDEF_T Dim hOutline As Long Dim MbrInfo As ESB_MBRINFO_T Dim hMemberProfit As Long Dim hNewMember As Long Object.hCtx = hCtx Object.Type = ESB_OBJTYPE_OUTLINE Object.AppName = "Sample" Object.DbName = "Basic" Object.FileName = "Basic" sts = EsbOtlOpenOutline(hCtx, Object, ESB_YES, ESB_YES, hOutline) If sts = 0 Then sts = EsbOtlFindMember(hOutline, "Profit", hMemberProfit) End If If sts = 0 And hMemberProfit <> 0 Then MbrInfo.szMember = "Inventory" sts = EsbOtlAddMember(hOutline, MbrInfo, ESB_NULL, hMemberProfit, hNewMember) End If End Sub
関連トピック