Esempio n. 1
0
File: adsx.c Progetto: SBCamus/core
static HB_ERRCODE adsxGoTop( ADSXAREAP pArea )
{
   PMIXTAG  pTag;
   HB_ULONG ulRecNo;

   pTag = pArea->pTagCurrent;

   if( ! pTag )
      return SUPER_GOTOP( ( AREAP ) pArea );

   if( pTag->ulRecCount > 0 )
   {
      ulRecNo = pTag->pKeys[ 0 ]->rec;
   }
   else
   {
      ulRecNo = 0;
   }
   if( SUPER_GOTO( ( AREAP ) pArea, ulRecNo ) == HB_SUCCESS )
   {
      pTag->ulKeyNo = ulRecNo ? 1 : 0;
      return HB_SUCCESS;
   }
   pTag->ulKeyNo = 0;
   return HB_FAILURE;
}
Esempio n. 2
0
/*
 * Position cursor at a specific physical record.
 */
static HB_ERRCODE hb_sdfGoTo( SDFAREAP pArea, HB_ULONG ulRecNo )
{
   HB_TRACE( HB_TR_DEBUG, ( "hb_sdfGoTo(%p, %lu)", pArea, ulRecNo ) );

#ifndef HB_CLP_STRICT
   if( pArea->fReadonly && ulRecNo >= pArea->ulRecNo )
   {
      while( pArea->ulRecNo < ulRecNo && pArea->fPositioned )
      {
         if( hb_sdfNextRecord( pArea ) != HB_SUCCESS )
            return HB_FAILURE;
      }
      return HB_SUCCESS;
   }
#endif
   /* generate RTE */
   return SUPER_GOTO( &pArea->area, ulRecNo );
}