メンバー名が一意である場合にはメンバー名を戻し、メンバー名が重複している場合には、メンバーの区別に必要な最小限の修飾名を戻します。
構文
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;
}