Adds a member to the outline and sets the member's attributes.
Syntax
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
Parameter | Description |
---|---|
hOutline | Outline context handle. |
pMemberInfo | Member information structure defining the member and its attributes. |
hparent | Handle of parent. This field is used only if the hPrevSibling field is ESB_NULL. |
hPrevSibling | Handle of previous sibling. |
phMember | Handle of new member returned from the API. |
Notes
The ESB_MBRINFO_T structure must be created and filled before calling this function.
The member name must be unique unless you are creating a shared member.
Position of the added member:
The new member is inserted following the hPrevSibling member.
If the hPrevSibling field is ESB_NULL, the new member becomes the first child of the parent specified by hParent.
If both hParent and hPrevSibling are ESB_NULL, the new member becomes the first dimension in the outline.
To add a shared member:
The shared member must be a zero-level (leaf node) member. (Shared members cannot have children.)
The actual member must already exist in the dimension.
Set the usShare field of the ESB_MBRINFO_T structure to ESB_SHARE_SHARE.
To add a LABEL member:
You must first add the member without the label attribute set.
Next, add its children.
Then, use EsbOtlSetMemberInfo() to set the label tag of the label member. (A label member must have children.)
To add an attribute member, set the fields of ESB_MBRINFO_T as follows:
Field | Setting |
---|---|
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 | Attribute value. For an attribute dimension or zero-level (leaf node) attribute member, one of the following data types:
For any attribute member, but not an attribute dimension: ESB_ATTRMBRDT_NONE = Everything else including empty. |
Notes on Adding an Attribute Member:
Adding a zero-level attribute member that is not of type ESB_ATTRMBRDT_STRING also sets the szMember field of the ESB_MBRINFO_T structure to the attribute member's long name, using the specifications for the outline in the ESB_ATTRSPECS_T structure.
You must set usCategory and usStorageCategory for an attribute member, as well as an attribute dimension. (You need not set usCategory and usStorageCategory for a base member. You must set them for a base dimension only.)
Do not set the szDimName field of the ESB_MBRINFO_T structure.
For a zero-level attribute member that is not of type ESB_ATTRMBRDT_STRING, do not set the Attribute field. The attribute value is derived internally by converting the attribute member long name.
If you set an attribute member's data type to ESB_ATTRMBRDT_AUTO, Essbase does the following:
Sets the member's data type to the data type of its dimension, if the member name can be converted to a value of that type.
If the member name cannot be converted to a value of the dimension's data type, sets the member's data type to ESB_ATTRMBRDT_NONE.
For the first child member converted from ESB_ATTRMBRDT_AUTO to a data type other than ESB_ATTRMBRDT_NONE, converts the parent's long name to a short name.
To add a dimension:
To add an attribute dimension, call EsbOtlAddDimension(). Do not call EsbOtlAddMember().
To add a dimension that is not an attribute dimension, call either EsbOtlAddDimension() or EsbOtlAddMember().
EsbOtlAddDimension() gives you the benefit of selecting any member in the added dimension to be assigned the data values associated with the existing dimensions.
If EsbOtlAddMember() is used, the top member (dimension) of the added dimension is assigned the data values associated with the existing dimensions.
Return Value
Returns 0 if successful; otherwise one of the following:
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
Example
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
See Also