Associates a base dimension with an attribute dimension and defines the base dimension as having varying attributes. Member attribute associations vary depending on the level-0 members of the given independent dimensions, of types specified in pucIndependentTypes. Continuous independent dimensions must be specified last.
Syntax
ESS_FUNC_M EssOtlVaryingAssociateAttributeDimension (hOutline, hBaseDim, hAttrDim, countOfIndepDims, *pIndepDims, *pucIndependentTypes);| Parameter | Data Type | Description |
|---|---|---|
hOutline | ESS_HOUTLINE_T | Outline context handle |
hBaseDim | ESS_HMEMBER_T | Base dimension handle |
hAttrDim | ESS_HMEMBER_T | Attribute dimension handle |
countOfIndepDims | ESS_INT32_T | The number of independent dimensions that control the varying attribute |
*pIndepDims | ESS_HMEMBER_T | Pointer to an array of member handles for the independent dimensions |
*pucIndependentTypes | ESS_UCHAR_T | Pointer to an array of independent types contained in *pIndepDims. The independent types supported are:
|
Return Value
Returns 0 if successful.
Example
void TestEssOtlVaryingAssociateAttributeDimenion()
{
ESS_STS_T sts = ESS_STS_NOERR;
ESS_HOUTLINE_T hOutline = ESS_NULL;
ESS_OBJDEF_T Object;
ESS_HMEMBER_T hBaseDim = ESS_NULL;
ESS_HMEMBER_T IndDimsArray[2];
ESS_HMEMBER_T hAttrDimArray[9];
ESS_INT32_T countOfIndDims;
ESS_UCHAR_T pucIndependentTypes[2];
int i;
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);
SetupTest(hOutline);
/* Assign independent dimension array*/
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);
/* Get handles to base and attribute dimensions for test.*/
sts = EssOtlFindMember(hOutline, "Entities", &hBaseDim);
printf("\nEssOtlFindMember sts: %d\n", sts);
sts = EssOtlFindMember(hOutline, "Type", &hAttrDimArray[0]);
printf("EssOtlFindMember sts: %d\n", sts);
sts = EssOtlFindMember(hOutline, "FT/PT", &hAttrDimArray[1]);
printf("EssOtlFindMember sts: %d\n", sts);
/* Disassociate current association before tests.*/
for (i = 0; i < 2; i++)
{
sts = EssOtlDisassociateAttributeDimension(hOutline, hBaseDim, hAttrDimArray[i]);
printf("EssOtlDisassociateAttributeDimension sts: %d\n", sts);
}
/* Associate the dimension Entities to Type*/
printf("\nValid case: Associate the dimension Entities and Type:\n");
countOfIndDims = 2;
pucIndependentTypes[0] = ESS_ASSOCIATE_TYPE_DISCRETE;
pucIndependentTypes[1] = ESS_ASSOCIATE_TYPE_CONTINUOUS;
sts = EssOtlVaryingAssociateAttributeDimension(hOutline, hBaseDim, hAttrDimArray[0], countOfIndDims, IndDimsArray, pucIndependentTypes);
printf("EssOtlVaryingAssociateAttributeDimension sts: %d\n", sts);
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);
}See Also