メンバー名が一意である場合にはメンバー名を戻し、メンバー名が重複している場合には、メンバーの区別に必要な最小限の修飾名を戻します。
構文
ESS_FUNC_M EssOtlGetMemberUniqueName (
hOutline, hMember, *szFullName
);
パラメータ | データ型 | 説明 |
---|---|---|
hOutline |
ESS_HOUTLINE_T |
アウトラインのコンテキスト・ハンドル(入力)。 |
hMember |
ESS_HMEMBER_T |
メンバーのハンドル(入力)。 |
*szFullName |
ESS_STR_T |
戻されたメンバー名または修飾されたメンバー名(出力)。 |
備考
この関数を呼び出す前に、EssOtlOpenOutlineを呼び出して編集モードでアウトラインを開くか、EssOtlOpenOutlineQueryを呼び出してクエリー・モードでアウトラインを開いてください。
この関数の2番目の引数のメンバー・ハンドルを取得するには、メンバー走査関数を使用します。
重複するメンバー名が許可されるアウトラインで、渡されたメンバー・ハンドルが拡張された共有メンバー、または標準の共有メンバーである場合には、この関数は一意の名前を戻します。
戻り値
正常終了の場合は0が戻され、それ以外はエラーが戻されます。
例
次の例では、この関数の出力は、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; }
次の例は、クエリー・モードでのこの関数の使用を示しています。
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; }