Returns the member name (if the member name is unique) or the minimum qualified name required to distinguish the member (if the member name is duplicate).
Syntax
ESS_FUNC_M EssOtlGetMemberUniqueName (hOutline, hMember, *szFullName);
Parameter | Data Type | Description |
---|---|---|
hOutline | ESS_HOUTLINE_T | Outline context handle (input). |
hMember | ESS_HMEMBER_T | Member handle (input). |
*szFullName | ESS_STR_T | The returned member name or qualified member name (output). |
Notes
Before you call this function, call EssOtlOpenOutline to open the outline in editing mode, or call EssOtlOpenOutlineQuery to open the outline in query mode.
Use a Member Traversal Function to get a member handle for the second argument of this function.
In an outline that allows duplicate member names, if the member handle passed in is an extended shared member or a regular shared member, this function returns the unique name.
Return Value
Returns 0 if successful; otherwise, returns an error.
Example
The output of this function in the following example is the fully qualified member name of Qtr1: [2004].[Qtr1]
ESS_FUNC_M ESS_GetMemberUniq() { ESS_STS_T sts = 0; ESS_HOUTLINE_T hOutline; ESS_OBJDEF_T Object; ESS_APPNAME_T szAppName; ESS_DBNAME_T szDbName; ESS_OBJNAME_T szFileName; ESS_STR_T szFullName; ESS_HMEMBER_T hMemberParent; ESS_HMEMBER_T hMemberChild; memset(&Object, '\0', sizeof(Object)); Object.hCtx = hCtx; Object.ObjType = ESS_OBJTYPE_OUTLINE; strcpy(szAppName, "Demo"); strcpy(szDbName, "Test"); strcpy(szFileName, "Test"); Object.AppName = szAppName; Object.DbName = szDbName; Object.FileName = szFileName; sts = EssOtlOpenOutline(hCtx, &Object, ESS_TRUE, ESS_TRUE, &hOutline); if (!sts) { sts = EssOtlFindMember(hOutline, "2004", &hMemberParent); } if (!sts && hMemberParent) { sts = EssOtlGetChild(hOutline, hMemberParent, &hMemberChild); } /*Get the qualified name of the first child of 2004, Qtr1*/ if (!sts) { sts = EssOtlGetMemberUniqueName (hOutline, hMemberChild, &szFullName); if (sts) printf("EssOtlGetMemberUniqueName failed sts %ld\n",sts); else printf("Qtr1's qualified name is: %s\n", szFullName); } return sts; }
The following example shows this function used in query mode.
member_fields = "<SelectMbrInfo (membername, uniquename) "; member_selection = "@SHARE(@DESCENDANTS(product))"; MaxCount = -1; phMemberArray = ESS_NULL; pqryErrorList = ESS_NULL; status = EssOtlQueryMembersEx(hOutline, member_fields, member_selection, &MaxCount, &phMemberArray, &pqryErrorList); if (status) goto exit; for (int i = 0; i < MaxCount; i++) { status = EssOtlGetMemberField(hOutline, phMemberArray[i], ESS_OTLQRYMBR_NAME, (ESS_PPVOID_T) &pName); if (status) goto exit; status = EssOtlGetMemberUniqueName(hOutline, phMemberArray[i], &pUniqueName2); if (status) goto exit; }