この関数は、条件付きズームインを開始します。
構文
ESSG_FUNC_M
EssGBeginConditionalZoomIn
(
hGrid, pZoomCell,
pszConditions, ulOptions
);
| パラメータ | データ型 | 説明 |
|---|---|---|
hGrid |
ESSG_HGRID_T |
EssGNewGridから戻されるハンドル。 |
pZoomCell |
ESSG_RANGE_T |
ズーム・インするセルを示します。条件付きズーム・インでは単一のセルである必要があります。 |
pszConditions |
ESSG_STR_T |
ズームイン条件に関するEssbaseレポート指定コマンドを含む文字列(64K以下)。 レポート・ライターのメンバー名/別名/一意の名前処理フォーマット・コマンドをpszConditionsパラメータに使用しないでください。EssGSetGridOptionで利用可能なオプションを使用してください。 |
ulOptions |
ESSG_ULONG_T |
ズームインのタイプ(横または下)を示すビットマスク。次の2つの値は互いに排他的です:
次のオプションを、ビットOR (|)を使用して、ulOptionsに追加できます: ESSG_NOATTRIBUTESは、pAttributes値のないグリッドを戻します。 |
備考
ズーム・インするセルは、1つの範囲で指定します。適用する条件は、Essbaseレポート指定コマンドを含む文字列として渡されます。
戻されたセル値の属性は、別のサーバー要求を使用して取得されます。ulOptionsパラメータにESSG_NOATTRIBUTESを渡すと、サーバーの発行する要求が1つ少なくなり、大規模な結果グリッドではより高速になります。
条件付きズームインは、一度に複数のズーム・セルでは実行できません。
条件付きズームインを行うとき、有効なズーム・レベルは、ESSG_NEXTLEVEL、ESSG_BOTTOMLEVELまたはESSG_ALLLEVELSの3つしかありません。条件付きズームインのズーム・レベルは、EssGSetGridOptionによって、有効な3レベルの1つに設定する必要があります。条件付きズームインを実行するときに、無効なレベルが設定されると、APIはデフォルトのESSG_NEXTLEVELを使用します。
ズーム・レベルがESSG_BOTTOMLEVELである場合、メンバーは、ズーム・インしている次元における0レベルのすべてのメンバーから、条件に基づいて選択されます。たとえば、ズーム・セルがMarket次元からのEastを含んでおり、ズーム・レベルがESS_BOTTOMLEVELである場合、選択されるメンバーは、Eastの子孫のみでなく、Marketのリーフ・メンバーのいずれかの可能性があります。
SmartList、DateまたはFormat文字列を使用するアプリケーションなど、Type対応のアプリケーションの場合には、ESSG_NOATTRIBUTESを指定すると、タイプ情報なしのテキスト・エンコードされたデータを取得します。タイプ情報は、メンバー属性と同様に機能します。したがって、タイプ情報が必要な場合は、ESSG_NOATTRIBUTESを使用しないでください。
戻り値
正常終了の場合は、ESSG_STS_NOERRが戻されます。
アクセス
なし。
例
ESSG_VOID_T ESSG_BeginConditionalZoomIn(ESSG_HGRID_T hGrid)
{
ESSG_FUNC_M sts = ESS_STS_NOERR;
ESSG_PPDATA_T ppDataIn;
ESSG_PPDATA_T ppDataOut;
ESSG_RANGE_T rDataRangeIn, rDataRangeOut;
ESSG_ULONG_T ulOptions;
ESSG_RANGE_T pZoomCells;
ESSG_USHORT_T usState;
ESSG_STR_T pszConditions;
/* connect the grid to a database on the server */
sts = EssGConnect(hGrid, "Rainbow", "Admin",
"Password", "Demo", "Basic", ESSG_CONNECT_DEFAULT);
if(sts == 0)
{
ppDataIn = BuildTable(&rDataRangeIn);
ulOptions = ESSG_ZOOM_DOWN | ESSG_ALLLEVELS;
pZoomCells.ulRowStart = 0;
pZoomCells.ulColumnStart = 2;
pZoomCells.ulNumRows = 1;
pZoomCells.ulNumColumns = 1;
pszConditions = "<TOP("Scenario",3,@Datacol(3))";
/* start the conditional zoom-in operation */
sts = EssGBeginConditionalZoomIn(hGrid,
&pZoomCells, pszConditions, ulOptions);
}
if(sts == 0)
{
/* send the entire grid to define the query */
sts = EssGSendRows(hGrid, &rDataRangeIn,
ppDataIn);
}
if(sts == 0)
{
/* perform the conditional zoom-in */
sts = EssGPerformOperation(hGrid, 0);
/* Free the built data */
FreeTwoDim(ppDataIn, rDataRangeIn.ulNumRows);
}
if(sts == 0)
{
/* determine the results of conditional zoom-in */
sts = EssGGetResults(hGrid, 0, &rDataRangeOut, &usState);
}
if(sts ==0)
{
/* get all the data */
sts = EssGGetRows(hGrid, 0, &rDataRangeOut,
&rDataRangeOut, &ppDataOut);
}
if(sts == 0)
{
DisplayOutput(ppDataOut, rDataRangeOut);
/* free the returned data */
EssGFreeRows(hGrid, &rDataRangeOut, ppDataOut);
}
if(sts == 0)
{
EssGEndOperation(hGrid, 0);
EssGDisconnect(hGrid, 0);
}
}
関連トピック