この関数は、条件付き取得操作を開始します。
構文
ESSG_FUNC_M
EssGBeginConditionalRetrieve
(
hGrid, pszConditions,
ulOptions
);
| パラメータ | データ型 | 説明 |
|---|---|---|
hGrid |
ESSG_HGRID_T |
EssGNewGridから戻されるハンドル。 |
pszConditions |
ESSG_STR_T |
取得条件に関連するEssbaseレポート指定コマンドが含まれた文字列(64K以下)。レポート・ライターのメンバー名/別名/一意の名前処理フォーマット・コマンドをpszConditionsパラメータに使用しないでください。EssGSetGridOption関数で利用可能なオプションを使用してください。 |
ulOptions |
ESSG_ULONG_T |
取得タイプを示す定数。次のいずれかの値を使用する必要があります:
次の値は、ビットOR (|)を使用してulOptionsに追加できます: ESSG_NOATT IBUTESでは、pAttributesの値なしでグリッドが戻されます。 |
備考
レポート指定の一部に定義した条件は、グリッドに適用されます。
戻されたセル値の属性は、第2のサーバー要求を使用して入手します。ESSG_NOATTRIBUTESをulOptionsパラメータに渡すことで、サーバーへの要求数が1つ少なくなるため、大規模なグリッドの生成では、高速化につながります。
SmartList、Date、またはFormat文字列を使用したアプリケーションなど、タイプに対応したアプリケーションの場合は、テキストにエンコードされたデータが提供されます。ただし、ESSG_NOATTRIBUTESを指定した場合はタイプ情報は提供されません。タイプ情報はメンバー属性と類似の機能をするので、タイプ情報が必要な場合はESSG_NOATTRIBUTESは使用しないでください。
戻り値
正常終了の場合は、ESSG_STS_NOERRが戻されます。
アクセス
なし。
例
ESSG_VOID_T ESSG_BeginConditionalRetrieve(ESSG_HGRID_T hGrid)
{
ESSG_STS_T sts = ESS_STS_NOERR;
ESSG_PPDATA_T ppDataIn;
ESSG_PPDATA_T ppDataOut;
ESSG_RANGE_T rDataRangeIn, rDataRangeOut;
ESSG_ULONG_T ulOptions;
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_RET_RETRIEVE;
pszConditions = "<TOP(Scenario,3,@Datacol(3))";
/* start the conditional retrieve operation */
sts = EssGBeginConditionalRetrieve(hGrid,
pszConditions, ulOptions);
}
if(sts == 0)
{
/* send the entire grid to define the query */
sts = EssGSendRows(hGrid, &rDataRangeIn, pDataIn);
}
if(sts == 0)
{
/* perform the retrieval */
sts = EssGPerformOperation(hGrid, 0);
/* free the built data */
FreeTwoDim(ppDataIn, rDataRangeIn.ulNumRows);
}
if(sts == 0)
{
/* determine the results of the retrieve */
sts = EssGGetResults(hGrid, 0, &rDataRangeOut,
&usState);
}
if(sts ==0)
{
/* get all the data */
sts = EssGGetRows(hGrid, 0, &rDataRangeOut,
&rDataRangeOut, &ppDataOut);
}
if(sts == 0)
{
/* display the results */
DisplayOutput(ppDataOut, rDataRangeOut);
/* free the returned data */
EssGFreeRows(hGrid, &rDataRangeOut, ppDataOut);
}
if(!sts)
{
EssGEndOperation(hGrid, 0);
EssGDisconnect(hGrid, 0);
}
}
関連トピック