属性メンバーを基本メンバーに関連付けます。その際、指定した妥当性セットで指定された関連付けの妥当性が適用されます。
構文
ESS_FUNC_M EssOtlVaryingAssociateAttribute (
hOutline, hBaseMember, hAttrMember, mode, pValiditySet
);
| パラメータ | データ型 | 説明 |
|---|---|---|
hOutline |
ESS_HOUTLINE_T |
アウトラインのコンテキスト・ハンドル |
hBaseMember |
ESS_HMEMBER_T |
基本メンバーのハンドル |
hAttrMember |
ESS_HMEMBER_T |
属性メンバーのハンドル |
mode |
ESS_INT_T |
関連付けモード。可能な値:
|
pValiditySet |
ESS_VALIDITYSET_T |
関連付けが有効な個別の次元を定義する妥当性セットへのポインタ |
備考
完全な範囲が指定された場合、関連付けは指定された内容で行われます。
関連付けモードにより、完全な範囲ではなく、開始タプルのみ指定されている制限のない状況の処理方法が決まります。(説明用の例では、関連付けられたOunces属性メンバーが、関連付け前に製品100-10に関連付けられたと想定しています):
Jan Feb Mar Apr May
12 12 16 16 20
MODE_OVERWRITE - 関連付けは指定したメンバー以降の全メンバーに対して行われます。例: 3月から12を関連付け。
結果: 3月以降のすべてのメンバーが12に関連付けられます。矛盾している関連付けは上書きされます:
Jan Feb Mar Apr May
12 12
12 12 12
MODE_NOOVERWRITE - 関連付けは指定したタプルから開始し、既存の関連付け属性メンバーと異なるまで続行します。例: 3月から12を関連付け。
結果: 3月と4月は同じ属性だったため、関連付けは属性が変わる5月の前まで続行します:
Jan Feb Mar Apr May
12 12
12 12
20
戻り値
成功の場合、0が戻されます。
例
void TestEssOtlVaryingAssociateAttribute()
{
ESS_STS_T sts = ESS_STS_NOERR;
ESS_HOUTLINE_T hOutline = ESS_NULL;
ESS_OBJDEF_T Object;
ESS_HMEMBER_T hBaseMbr, hAttrMbr, hBaseDim, hAttrDim, hIndDim = ESS_NULL;
ESS_INT_T mode;
ESS_VALIDITYSET_T ValiditySet;
ESS_HMEMBER_T IndDimsArray[2];
ESS_STR_T IndepMbrsArray[4];
ESS_INT32_T countOfIndDims;
ESS_USHORT_T usValiditySetType;
ESS_UCHAR_T pucIndependentTypes[2];
memset(&Object, '\0', sizeof(Object));
Object.hCtx = hCtx;
Object.ObjType = ESS_OBJTYPE_OUTLINE;
Object.AppName = szAppName;
Object.DbName = szDbName;
Object.FileName = szDbName;
printf("\n");
sts = EssOtlOpenOutline(hCtx, &Object, ESS_TRUE, ESS_TRUE, &hOutline);
printf("EssOtlOpenOutline sts: %ld\n",sts);
/* Disassociate base dimension from attribute dimension before test.*/
printf("\nDisassociate base dimension from attribute dimension before test:");
sts = EssOtlFindMember(hOutline, "Entities", &hBaseDim);
printf("\nEssOtlFindMember sts: %d\n", sts);
sts = EssOtlFindMember(hOutline, "Type", &hAttrDim);
printf("EssOtlFindMember sts: %d\n", sts);
sts = EssOtlDisassociateAttributeDimension(hOutline, hBaseDim, hAttrDim);
printf("EssOtlDisassociateAttributeDimension sts: %d\n", sts);
/* Get handle for base member*/
printf("\nGet handle for base member:\n");
sts = EssOtlFindMember(hOutline, "Doe,Jane", &hBaseMbr);
printf("EssOtlFindMember sts: %d\n", sts);
/* Get handle for indep dimensions*/
printf("\nGet handle for indep dimensions:\n");
sts = EssOtlFindMember(hOutline, "Time Periods", &IndDimsArray[0]);
printf("EssOtlFindMember sts: %d\n", sts);
sts = EssOtlFindMember(hOutline, "Years", &IndDimsArray[1]);
printf("EssOtlFindMember sts: %d\n", sts);
/* Associate the dimension Entities and Type*/
printf("\nAssociate the dimensions:\n");
countOfIndDims = 2;
pucIndependentTypes[0] = ESS_ASSOCIATE_TYPE_DISCRETE;
pucIndependentTypes[1] = ESS_ASSOCIATE_TYPE_CONTINUOUS;
sts = EssOtlVaryingAssociateAttributeDimension(hOutline, hBaseDim, hAttrDim, countOfIndDims, IndDimsArray, pucIndependentTypes);
printf("EssOtlVaryingAssociateAttributeDimension sts: %d\n", sts);
/* Initial valid case with ValiditySetType of member handles*/
printf("\n*** Initial valid case with ValiditySetType of member handles ***\n");
printf("\nGet handle for attribute member:\n");
sts = EssOtlFindMember(hOutline, "Regular", &hAttrMbr);
printf("EssOtlFindMember sts: %d\n", sts);
sts = EssOtlFindMember(hOutline, "Jan", &hIndepMbrsArray[0]);
sts = EssOtlFindMember(hOutline, "FY03", &hIndepMbrsArray[1]);
sts = EssOtlFindMember(hOutline, "Jan", &hIndepMbrsArray[2]);
sts = EssOtlFindMember(hOutline, "FY06", &hIndepMbrsArray[3]);
memset(&ValiditySet, '\0', sizeof(ValiditySet));
ValiditySet.countOfIndepDims = 2;
ValiditySet.usValiditySetType = ESS_VALIDITYSET_TYPE_MBRHDLS;
ValiditySet.countOfIndepRanges = 1;
ValiditySet.pIndepMbrs = hIndepMbrsArray;
printf("\nBefore association:");
usValiditySetType = ESS_VALIDITYSET_TYPE_MBRHDLS;
DisplayVaryingAttributes(hOutline, hBaseMbr, hAttrDim, ESS_NULL, usValiditySetType);
mode = ESS_ASSOCIATE_MODE_NOOVERWRITE;
sts = EssOtlVaryingAssociateAttribute(hOutline, hBaseMbr, hAttrMbr, mode, &ValiditySet);
printf("EssOtlVaryingAssociateAttribute sts: %d\n", sts);
/* Restructure and save outline */
SaveOutline(hOutline);
sts = EssUnlockObject(hCtx, ESS_OBJTYPE_OUTLINE, Object.AppName, Object.DbName, Object.FileName);
printf("\nEssUnlockObject sts: %d\n", sts);
sts = EssOtlCloseOutline(hOutline);
printf("EssOtlCloseOutline sts: %d\n",sts);
}
関連トピック