EssOtlDetailQueryVaryingAttributes

EssOtlQueryVaryingAttributesに似ていますが、結果によりpphDetailMemberArrayに特定の関連属性が提供される点が異なります。

構文

            ESS_FUNC_M EssOtlDetailQueryVaryingAttributes(
		ESS_HOUTLINE_T 							hOutline,
		ESS_PVARYING_ATTRIBUTEQUERY_T 	pAttrQuery,
		ESS_PPERSPECTIVE_T 						pPerspective,
		ESS_PMBRCOUNTS_T 							pCount,
		ESS_PPHMEMBER_T 							pphMembers,
		ESS_PPHMEMBER_T 							pphDetailMemberArray,
		ESS_USHORT_T 								usValiditySetType,
		ESS_PVALIDITYSET_T 						**pppValiditySets);

         
パラメータデータ型説明

hOutline

ESS_HOUTLINE_T

アウトラインのコンテキスト・ハンドル

pAttrQuery

ESS_PVARYING_ATTRIBUTEQUERY_T

クエリーを定義する構造体へのポインタ

pPerspective

ESS_PPERSPECTIVE_T

クライアントまたはサーバーで関連付けをクエリーする際に使用される、独立したメンバーの集合へのポインタ

pCount

ESS_PMBRCOUNTS_T

戻される基本メンバーの数へのポインタ

pphMembers

ESS_PPHMEMBER_T

属性メンバーのハンドルの配列へのポインタ

pphDetailMemberArray

ESS_PPHMEMBER_T

属性メンバーの詳細ハンドルの配列へのポインタ

usValiditySetType

ESS_USHORT_T

ESS_VALIDITYSET_Tを参照してください。

**pppValiditySets

ESS_PVALIDITYSET_T

妥当性セットの配列へのポインタ

戻り値

戻り値:

         void TestEssOtlDetaileQueryVaringAttributes()
{
	ESS_STS_T	sts = ESS_STS_NOERR;
	ESS_HOUTLINE_T	hOutline = ESS_NULL;
	ESS_OBJDEF_T	Object;
	ESS_USHORT_T	i = 0;
	ESS_PMBRINFO_T	pMbrInfo = ESS_NULL;
	ESS_VARYING_ATTRIBUTEQUERY_T	pAttrQuery;
	ESS_MBRCOUNTS_T	Counts;
	ESS_USHORT_T	usValiditySetType;
	ESS_HMEMBER_T	hIndepMbrHandlesArray[4];
	ESS_PERSPECTIVE_T	Perspective;
	ESS_PHMEMBER_T	phMbrHandles = ESS_NULL;
	ESS_PHMEMBER_T	phDetailedMembers = ESS_NULL;
	ESS_PVALIDITYSET_T	*pValiditySets = ESS_NULL;
	ESS_HMEMBER_T	hAttrMbr, hBaseMbr;
	ESS_HMEMBER_T	hAttrDim;
	ESS_PREDICATE_T	Predicate;

	memset(&Object, '\0', sizeof(ESS_OBJDEF_T)); 
	memset(&Counts, '\0', sizeof(ESS_MBRCOUNTS_T));  
	memset(&pAttrQuery, 0x00, sizeof(ESS_ATTRIBUTEQUERY_T));
	memset(&Predicate, '\0', sizeof(ESS_PERSPECTIVE_T));

	Object.hCtx = hCtx;
	Object.ObjType = ESS_OBJTYPE_OUTLINE;
	Object.AppName = szAppName;
	Object.DbName = szDbName;
	Object.FileName = szDbName;
	sts = EssOtlOpenOutlineQuery(hCtx, &Object, &hOutline); 
	printf("EssOtlOpenOutlineQuery sts: %ld\n",sts);   

	Counts.ulStart = 0;
	Counts.ulMaxCount = 10;

	Predicate.ulQuery = ESS_SEARCH;
	Predicate.ulOptions = ESS_MEMBERSONLY;
	Predicate.pszDimension  = "";
	Predicate.pszString2 = "";

	/* Get handles for attribute member and dimension */
	Predicate.pszString1 = "Type";
	sts = EssOtlQueryMembersByName(hOutline, ESS_NULL, &Predicate, &Counts, &phMbrHandles);
	hAttrDim = phMbrHandles[0];
	Predicate.pszString1 = "Contractor";
	sts = EssOtlQueryMembersByName(hOutline, ESS_NULL, &Predicate, &Counts, &phMbrHandles);
	hAttrMbr = phMbrHandles[0];

	Predicate.pszString1 = "Doe,Jane";
	sts = EssOtlQueryMembersByName(hOutline, ESS_NULL, &Predicate, &Counts, &phMbrHandles);
	hBaseMbr = phMbrHandles[0];

	/* Get handles for independent members */
	Predicate.pszString1 = "Jan";
	sts = EssOtlQueryMembersByName(hOutline, ESS_NULL, &Predicate, &Counts, &phMbrHandles);
	hIndepMbrHandlesArray[0] = phMbrHandles[0];
	hIndepMbrHandlesArray[2] = phMbrHandles[0];

	Predicate.pszString1 = "FY03";
	sts = EssOtlQueryMembersByName(hOutline, ESS_NULL, &Predicate, &Counts, &phMbrHandles);
	hIndepMbrHandlesArray[1] = phMbrHandles[0];
	Predicate.pszString1 = "FY04";
	sts = EssOtlQueryMembersByName(hOutline, ESS_NULL, &Predicate, &Counts, &phMbrHandles);
	hIndepMbrHandlesArray[3] = phMbrHandles[0];

	memset(&Perspective, '\0', sizeof(ESS_PERSPECTIVE_T));
	Perspective.usValiditySetType = ESS_VALIDITYSET_TYPE_MBRHDLS;
	Perspective.countOfIndepDims = 2;
	Perspective.countOfIndepRanges = 1;
	Perspective.pIndepMbrs = hIndepMbrHandlesArray;

	/* Query by handle with InputMemberType of ESS_ATTRIBUTE_MEMBER and OutputMemberType of ESS_BASE_MEMBER*/
	printf("\n*** Query by handle with InputMemberType of ESS_ATTRIBUTE_MEMBER and OutputMemberType of ESS_BASE_MEMBER:\n");
	pAttrQuery.bInputMemberIsHandle = ESS_TRUE;
	pAttrQuery.uInputMember.hMember = hAttrMbr;
	pAttrQuery.usInputMemberType = ESS_ATTRIBUTE_MEMBER;
	pAttrQuery.usOutputMemberType = ESS_BASE_MEMBER;
	pAttrQuery.Attribute.usDataType = ESS_ATTRMBRDT_NONE;
	pAttrQuery.usOperation = ESS_ALL;

	usValiditySetType = ESS_VALIDITYSET_TYPE_MBRHDLS;
	sts = EssOtlDetailQueryVaryingAttributes(hOutline, &pAttrQuery, &Perspective, &Counts,
					&phMbrHandles, &phDetailedMembers, usValiditySetType, &pValiditySets);
	printf("EssOtlDetailQueryVaryingAttributes sts: %d\n", sts);
	if (!sts)
	{
		if (phMbrHandles)
		{
			printf("\tReturned member:\n");
			GetMemberInfo(hOutline, Counts, phMbrHandles);
			if(Counts.ulReturnCount && phMbrHandles)
				sts = EssOtlFreeMembers(hOutline, Counts.ulReturnCount, phMbrHandles);
		}

		if(phDetailedMembers)
		{
			printf("\tAssociated attribute member:\n");
			GetMemberInfo(hOutline, Counts, phDetailedMembers);
			if (Counts.ulReturnCount && phDetailedMembers)
				sts = EssOtlFreeMembers(hOutline, Counts.ulReturnCount, phDetailedMembers);
		}
	}

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

関連トピック

  • EssOtlQueryVaryingAttributes