指定した基本メンバーから特定の属性次元の属性メンバーの関連付けを解除します。指定した妥当セットは、関連付けの解除場所を指定します。
構文
ESS_FUNC_M EssOtlVaryingDisassociateAttribute (
hOutline, hBaseMember, hAttrDim, mode, pValiditySet
);
パラメータ | データ型 | 説明 |
---|---|---|
hOutline |
ESS_HOUTLINE_T |
アウトラインのコンテキスト・ハンドル |
hBaseMember |
ESS_HMEMBER_T |
基本メンバーのハンドル |
hAttrDim |
ESS_HMEMBER_T |
属性メンバーのハンドル |
mode |
ESS_INT_T |
関連付けモード。可能な値:
|
pValiditySet |
ESS_VALIDITYSET_T |
関連付けの解除が実行される独立したメンバーのセットへのポインタ |
備考
この関数は、指定された基本メンバーから属性の関連付けを削除します。
完全な範囲が指定された場合、関連付けの解除は指定された内容で行われます。
関連付けモードにより、完全な範囲ではなく、開始タプルのみ指定された場合の処理方法が決まります。(説明用の例では、関連付けられたOunces属性メンバーが、関連付け解除前に製品100-10に関連付けられたと想定しています):
Jan Feb Mar Apr May 12 12 16 16 12
MODE_OVERWRITE: 関連付けの解除は指定したメンバー以降の全メンバーに対して行われます。例: 2月から関連付け解除。
結果: 2月以降のすべてのメンバーの関連付けが解除されます:
Jan Feb Mar Apr May 12
MODE_NOOVERWRITE: 関連付けの解除は指定したタプルから開始し、既存の関連付け属性メンバーと異なるまで続行します。例:3月から関連付け解除を開始。
結果: 3月にも属性16があるため、4月と3月の関連付けが解除されます:
Jan Feb Mar Apr May 12 12 12
MODE_EXTEND: MODE_NOOVERWRITEに似ていますが、開始タプルの直前の関連付けが関連付け解除メンバー上に拡張される点が異なります。例: 3月から関連付け解除が開始
結果: 3月と4月の関連付けが解除され、前の月である2月の関連付けが適用されます。
Jan Feb Mar Apr May
12 12
12 12
12
戻り値
成功の場合、0が戻されます。
例
void TestEssOtlVaryingDisassociateAttribute() { 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_HMEMBER_T hIndepMbrsArray[4]; 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); /* Disassociation */ IndepMbrsArray[0]= ""; IndepMbrsArray[1]= ""; IndepMbrsArray[2]= ""; IndepMbrsArray[3]= ""; memset(&ValiditySet, '\0', sizeof(ValiditySet)); ValiditySet.countOfIndepDims = 2; ValiditySet.usValiditySetType = ESS_VALIDITYSET_TYPE_MBRNAMS; ValiditySet.countOfIndepRanges = 1; ValiditySet.pIndepMbrs = IndepMbrsArray; mode = ESS_DISASSOCIATE_MODE_NOOVERWRITE; sts = EssOtlVaryingDisassociateAttribute(hOutline, hBaseMbr, hAttrDim, mode, &ValiditySet); printf("EssOtlVaryingDisassociateAttribute 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); }
関連トピック