EssOtlVaryingAssociateAttribute

Associates an attribute member to a base member, with the validity of the associations specified by the given validity set.

Syntax

ESS_FUNC_M EssOtlVaryingAssociateAttribute (hOutline, hBaseMember, hAttrMember, mode, pValiditySet);
ParameterData TypeDescription

hOutline

ESS_HOUTLINE_T

Outline context handle

hBaseMember

ESS_HMEMBER_T

Handle to the base member

hAttrMember

ESS_HMEMBER_T

Handle to the attribute member

mode

ESS_INT_T

Association mode. Possible values:

  • MODE_OVERWRITE

  • MODE_NOOVERWRITE

pValiditySet

ESS_VALIDITYSET_T

Pointer to the validity set that defines the independent dimension for which the association is valid

Notes

Return Value

Returns 0 if successful.

Example

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);
}

See Also