指定した基本メンバーに関連付けられている属性メンバーを戻します。
構文
| パラメータ | データ型 | 説明 |
|---|---|---|
hCtx; |
ESS_HCTX_T |
APIコンテキスト・ハンドル。 |
BaseMbrName; |
ESS_STR_T |
基本メンバー名。 |
AttrDimName; |
ESS_STR_T |
(オプション)属性次元名。 |
pCount; |
ESS_PULONG_T |
戻された属性メンバー数。 |
ppAttrInfo; |
ESS_ATTRIBUTEINFO_T |
属性情報。 |
備考
この関数を呼び出すと、属性メンバーに関する情報を、EssQueryDatabaseMembersを使用して取得するよりも多く取得できます。
AttrDimNameをNULLに設定すると、基本メンバーに関連付けられているすべての属性メンバーが戻されます。
オプションで、属性次元名を指定すると、基本メンバーに関連付けられているその次元メンバーに関する情報のみを取得できます。
アクセス
この関数を使用するのに、特別な権限は必要ありません。
例
//void ESS_GetAssociateAttributeInfo();
ESS_GetAssociatedAttributesInfo ()
{
ESS_STS_T sts;
ESS_ULONG_T pCount=0;
ESS_PATTRIBUTEINFO_T pAttributeInfo;
ESS_USHORT_T index=0;
ESS_CHAR_T time_string[32];
struct tm* pTime;
ESS_DATETIME_T et;
ESS_PATTRSPECS_T pAttrSpecs;
ESS_USHORT_T usDateFormat;
ESS_MBRNAME_T attributeName;
ESS_MBRNAME_T dimensionName;
pAttributeInfo = NULL;
strcpy(attributeName, "100-10");
strcpy(dimensionName, "\0");
sts = EssGetAssociatedAttributesInfo(hCtx, attributeName, dimensionName, &pCount, &pAttributeInfo);
/* for handling time values */
et = pAttributeInfo->Attribute.value.dtData;
if (!sts)
{
printf ("\nAssociated Attr info for [%s]\n", attributeName);
printf ("------------------------------------\n");
for (index=0; index<pCount; index++)
{
printf ("MbrName : %s\n", pAttributeInfo[index].MbrName);
printf ("DimName : %s\n", pAttributeInfo[index].DimName);
switch(pAttributeInfo[index].Attribute.usDataType)
{
case ESS_ATTRMBRDT_BOOL:
printf ("Data Type : Boolean \n");
if ( pAttributeInfo[index].Attribute.value.bData)
printf ("Data Value : True \n");
else
printf ("Data Value : False \n");
break;
case ESS_ATTRMBRDT_DOUBLE:
printf ("Data Type : Numeric(Double) \n");
printf ("Data Value : %g \n",pAttributeInfo[index].Attribute.value.dblData);
break;
case ESS_ATTRMBRDT_DATETIME:
printf ("Data Type : Date \n");
sts = EssGetAttributeSpecifications(hCtx, &pAttrSpecs);
if (sts)
usDateFormat = ESS_DATEFORMAT_MMDDYYYY;
else
usDateFormat = pAttrSpecs->usDateFormat;
pTime = gmtime((time_t*)&et);
switch(usDateFormat)
{
case ESS_DATEFORMAT_MMDDYYYY:
sprintf(time_string, "MM-DD-YYYY %02i-%02i-%04i",
pTime->tm_mon+1, pTime->tm_mday,pTime->tm_year+1900);
break;
case ESS_DATEFORMAT_DDMMYYYY :
sprintf(time_string, "DD-MM-YYYY %02i-%02i-%04i",
pTime->tm_mday,pTime->tm_mon+1, pTime->tm_year+1900);
break;
}
printf ("Data Value : %s \n", time_string);
break;
case ESS_ATTRMBRDT_STRING:
printf ("Data Type : String \n");
printf ("Data Value : %s \n", pAttributeInfo[index].Attribute.value.strData);
EssFree(hInst, pAttributeInfo[index].Attribute.value.strData);
break;
}
printf("\n");
}
}
if (pAttributeInfo)
EssFreeStructure(hInst, ESS_DT_STRUCT_ATTRIBUTEINFO, 1, pAttributeInfo);
return (sts);
}
関連トピック