EssGBeginConditionalRetrieve

この関数は、条件付き取得操作を開始します。

構文

            ESSG_FUNC_M 
            EssGBeginConditionalRetrieve
             (
            hGrid, pszConditions, 
ulOptions
            ); 
         
パラメータデータ型説明

hGrid

ESSG_HGRID_T

EssGNewGridから戻されるハンドル。

pszConditions

ESSG_STR_T

取得条件に関連するEssbaseレポート指定コマンドが含まれた文字列(64K以下)。レポート・ライターのメンバー名/別名/一意の名前処理フォーマット・コマンドをpszConditionsパラメータに使用しないでください。EssGSetGridOption関数で利用可能なオプションを使用してください。

ulOptions

ESSG_ULONG_T

取得タイプを示す定数。次のいずれかの値を使用する必要があります:

  • ESSG_RET_RETRIEVE 取得のみ

  • ESSG_RET_RETRIEVELOCK 取得とロック

  • ESSG_RET_LOCKONLY ロックのみ(データを取得しない)

次の値は、ビットOR (|)を使用してulOptionsに追加できます: ESSG_NOATT IBUTESでは、pAttributesの値なしでグリッドが戻されます。

備考

戻り値

正常終了の場合は、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);
  }
}
      

関連トピック