EsbOtlAddMember
Description
EsbOtlAddMember() 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
Parameters
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.
|
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
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,
set one of the following data types:
ESB_ATTRMBRDT_BOOL
ESB_ATTRMBRDT_DATETIME
ESB_ATTRMBRDT_DOUBLE
ESB_ATTRMBRDT_STRING
You may instead set a zero-level (leaf node) attribute member to ESB_ATTRMBRDT_AUTO.
You may set attribute members that are not zero level to ESB_ATTRMBRDT_NONE or ESB_ATTRMBR_AUTO.
|
- 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.
Example
Declare Function EsbOtlAddMember Lib "ESBOTLW"
(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
EsbOtlAddDimension()
EsbOtlDeleteMember()
EsbOtlDeleteDimension()
EsbSetMemberInfo()
EsbOtlFindMember()