Gets the drill-through reports associated with a data cell as a list of URL XMLs, given the cell's member combination.
Syntax
ESS_FUNC_M EssGetCellDrillThruReports (hCtx, noMbrs, pMbrs, nURLXML, ppURLXMLLen, ppURLXML);
Parameter | Data Type | Description |
---|---|---|
hCtx | ESS_HCTX_T | API context handle |
noMbrs | ESS_USHORT_T | Number of members in the member list pMbrs |
pMbrs | ESS_PSTR_T | Pointer to the list of member names (or Aliases); the array size is assumed to be the dimension count |
nURLXML | ESS_PUSHORT_T | Number of URL XMLs returned |
ppURLXMLLen | ESS_PPUSHORT_T | Returns length of URL XML generated |
ppURLXML | ESS_PPVOID_T | Returns pointers to the URL XML byte stream |
Notes
The application database must be set to Active for this call. This function must be extended to support any additional information needed by the clients.
Return Value
If successful, gets the list of URL XMLs.
If unsuccessful, returns an error code.
Access
Caller must have database Read privilege (ESS_PRIV_READ) for the specified database.
Caller must have selected the specified database as the active database using EssSetActive().
Example
/* Sample Code for EssGetCellDrillThruReports */ ESS_STS_T sts = ESS_STS_NOERR; ESS_SHORT_T numMbrs = 0; ESS_STR_T *pMbrs = ESS_NULL; ESS_USHORT_T numURLXML, i = 0; ESS_USHORT_T *URLXMLLen = ESS_NULL; ESS_PPVOID_T *URLXML = ESS_NULL; ESS_CHAR_T pTmpXML[XML_CHAR_MAX]; /* Valid case */ numMbrs = 5; sts = EssAlloc (hInst, sizeof(ESS_STR_T) * numMbrs , &pMbrs); pMbrs[0] = "Jul"; pMbrs[1] = "100-10"; pMbrs[2] = "Actual"; pMbrs[3] = "New York"; pMbrs[4] = "Sales"; sts = EssGetCellDrillThruReports(hCtx, numMbrs, pMbrs, &numURLXML, &URLXMLLen, &URLXML); printf("EssGetCellDrillThruReports sts: %ld\n",sts); if(!sts) { printf("\nNumber of URL XML: %d", numURLXML); for (i = 0; i < numURLXML; i++) { memset(pTmpXML, 0, XML_CHAR_MAX); memcpy(pTmpXML, URLXML[i], URLXMLLen[i]); if ( URLXML[i] != ESS_NULL ) printf("\tXML [%d] : %s\n", i, pTmpXML ); else printf("\tXML [%d] : NULL STRING \n", i ); if ( URLXML[i] != ESS_NULL ) EssFree(hInst, URLXML[i]); } if ( URLXML != ESS_NULL ) EssFree(hInst, URLXML); if ( URLXMLLen != ESS_NULL ) EssFree(hInst, URLXMLLen); }