EssOtlGetMemberUniqueName

メンバー名が一意である場合にはメンバー名を戻し、メンバー名が重複している場合には、メンバーの区別に必要な最小限の修飾名を戻します。

構文

            ESS_FUNC_M EssOtlGetMemberUniqueName (
            hOutline, hMember, *szFullName
            );
         
パラメータデータ型説明

hOutline

ESS_HOUTLINE_T

アウトラインのコンテキスト・ハンドル(入力)。

hMember

ESS_HMEMBER_T

メンバーのハンドル(入力)。

*szFullName

ESS_STR_T

戻されたメンバー名または修飾されたメンバー名(出力)。

備考

戻り値

正常終了の場合は0が戻され、それ以外はエラーが戻されます。

例1

次の例では、この関数の出力は、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;
}
      

例2

次の例は、クエリー・モードでのこの関数の使用を示しています。

         
   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; 
   }