2002-11-18 14:55 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>

This commit is contained in:
Alexander S.Kresin
2002-11-18 11:53:21 +00:00
parent b23b8a3657
commit eadf174bde
7 changed files with 36 additions and 5 deletions

View File

@@ -8,6 +8,15 @@
2002-12-01 23:12 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2002-11-18 14:55 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
* include/hbrddapi.c
* source/rdd/dbcmd.c
* source/rdd/workarea.c
* source/rdd/dbfntx/dbfntx1.c
* source/pp/pptable.c
* contrib/rdd_ads/ads1.c
* WHILE clause implemented for ADS RDD
2002-11-15 14:30 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
* include/hbcdpapi.c
* source/rtl/cdpapi.c

View File

@@ -1989,6 +1989,17 @@ static ERRCODE adsOrderCreate( ADSAREAP pArea, LPDBORDERCREATEINFO pOrderInfo )
{
hTableOrIndex = pArea->hTable;
}
if( pArea->lpdbOrdCondInfo && pArea->lpdbOrdCondInfo->abWhile )
{
if( pucWhile[0] )
{
strcat( (char * ) pucWhile, ".AND.(");
strcat( (char * ) pucWhile, (char * ) pArea->lpdbOrdCondInfo->abWhile );
strcat( (char * ) pucWhile, ")");
}
else
strcat( (char * ) pucWhile, (char * ) pArea->lpdbOrdCondInfo->abWhile );
}
if ( pArea->lpdbOrdCondInfo )
{

View File

@@ -186,6 +186,7 @@ typedef struct _DBORDERCONDINFO
{
BOOL fActive;
BYTE * abFor;
BYTE * abWhile;
PHB_ITEM itmCobFor;
PHB_ITEM itmCobWhile;
PHB_ITEM itmCobEval;

View File

@@ -400,14 +400,14 @@ void hb_pp_Table( void )
"CLOSE DATABASES ; CLOSE FORMAT ; CLEAR MEMORY ; CLEAR GETS ; SET ALTERNATE OFF ; SET ALTERNATE TO",&sC___228 };
#ifdef HB_EXTENSION
static COMMANDS sC___230 = {0,"INDEX","ON \1A00 [TAG \1B40 ] TO \1C40 [FOR \1D00] [\1E20ALL>] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [EVAL \1J00] [EVERY \1K00] [\1L20 UNIQUE>] [\1M20 ASCENDING>] [\1N20 DESCENDING>] [\1O20 USECURRENT>] [\1P20 ADDITIVE>] [\1R20 CUSTOM>] [\1S20 NOOPTIMIZE>] [\1T20 MEMORY>]",
"ordCondSet( \1D20, \1D40, [\1E50], \1F40, \1J40, \1K00, RECNO(), \1G00, \1H00, [\1I50], [\1N50],, [\1P50], [\1O50], [\1R50], [\1S50], [\1T50] ) ; ordCreate(\1C30, \1B30, \1A20, \1A40, [\1L50] )",&sC___229 };
"ordCondSet( \1D20, \1D40, [\1E50], \1F40, \1J40, \1K00, RECNO(), \1G00, \1H00, [\1I50], [\1N50],, [\1P50], [\1O50], [\1R50], [\1S50], \1F20, [\1T50] ) ; ordCreate(\1C30, \1B30, \1A20, \1A40, [\1L50] )",&sC___229 };
static COMMANDS sC___231 = {0,"INDEX","ON \1A00 TAG \1B40 [TO \1C40] [FOR \1D00] [\1E20ALL>] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [EVAL \1J00] [EVERY \1K00] [\1L20 UNIQUE>] [\1M20 ASCENDING>] [\1N20 DESCENDING>] [\1O20 USECURRENT>] [\1P20 ADDITIVE>] [\1R20 CUSTOM>] [\1S20 NOOPTIMIZE>] [\1T20 MEMORY>]",
"ordCondSet( \1D20, \1D40, [\1E50], \1F40, \1J40, \1K00, RECNO(), \1G00, \1H00, [\1I50], [\1N50],, [\1P50], [\1O50], [\1R50], [\1S50], [\1T50] ) ; ordCreate(\1C30, \1B30, \1A20, \1A40, [\1L50] )",&sC___230 };
"ordCondSet( \1D20, \1D40, [\1E50], \1F40, \1J40, \1K00, RECNO(), \1G00, \1H00, [\1I50], [\1N50],, [\1P50], [\1O50], [\1R50], [\1S50], \1F20, [\1T50] ) ; ordCreate(\1C30, \1B30, \1A20, \1A40, [\1L50] )",&sC___230 };
#else
static COMMANDS sC___230 = {0,"INDEX","ON \1A00 [TAG \1B40 ] TO \1C40 [FOR \1D00] [\1E20ALL>] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [EVAL \1J00] [EVERY \1K00] [\1L20 UNIQUE>] [\1M20 ASCENDING>] [\1N20 DESCENDING>] [\1O20 USECURRENT>] [\1P20 ADDITIVE>] [\1R20 CUSTOM>] [\1S20 NOOPTIMIZE>]",
"ordCondSet( \1D20, \1D40, [\1E50], \1F40, \1J40, \1K00, RECNO(), \1G00, \1H00, [\1I50], [\1N50],, [\1P50], [\1O50], [\1R50], [\1S50] ) ; ordCreate(\1C30, \1B30, \1A20, \1A40, [\1L50] )",&sC___229 };
"ordCondSet( \1D20, \1D40, [\1E50], \1F40, \1J40, \1K00, RECNO(), \1G00, \1H00, [\1I50], [\1N50],, [\1P50], [\1O50], [\1R50], [\1S50], \1F20 ) ; ordCreate(\1C30, \1B30, \1A20, \1A40, [\1L50] )",&sC___229 };
static COMMANDS sC___231 = {0,"INDEX","ON \1A00 TAG \1B40 [TO \1C40] [FOR \1D00] [\1E20ALL>] [WHILE \1F00] [NEXT \1G00] [RECORD \1H00] [\1I20REST>] [EVAL \1J00] [EVERY \1K00] [\1L20 UNIQUE>] [\1M20 ASCENDING>] [\1N20 DESCENDING>] [\1O20 USECURRENT>] [\1P20 ADDITIVE>] [\1R20 CUSTOM>] [\1S20 NOOPTIMIZE>]",
"ordCondSet( \1D20, \1D40, [\1E50], \1F40, \1J40, \1K00, RECNO(), \1G00, \1H00, [\1I50], [\1N50],, [\1P50], [\1O50], [\1R50], [\1S50] ) ; ordCreate(\1C30, \1B30, \1A20, \1A40, [\1L50] )",&sC___230 };
"ordCondSet( \1D20, \1D40, [\1E50], \1F40, \1J40, \1K00, RECNO(), \1G00, \1H00, [\1I50], [\1N50],, [\1P50], [\1O50], [\1R50], [\1S50], \1F20 ) ; ordCreate(\1C30, \1B30, \1A20, \1A40, [\1L50] )",&sC___230 };
#endif
static COMMANDS sC___232 = {0,"INDEX","ON \1A00 TO \1B40 [\1C20 UNIQUE>]",
"dbCreateIndex( \1B30, \1A20, \1A40, if( \1C50, .t., NIL ) )",&sC___231 };

View File

@@ -2359,6 +2359,14 @@ HB_FUNC( ORDCONDSET )
else
lpdbOrdCondInfo->abFor = NULL;
if( ISCHAR( 17 ) && ( ulLen = hb_parclen( 17 ) ) > 0 )
{
lpdbOrdCondInfo->abWhile = ( BYTE * ) hb_xgrab( ulLen + 1 );
strcpy( ( char * ) lpdbOrdCondInfo->abWhile, hb_parc( 17 ) );
}
else
lpdbOrdCondInfo->abWhile = NULL;
pItem = hb_param( 2, HB_IT_BLOCK );
if( pItem )
{

View File

@@ -3401,7 +3401,7 @@ static ERRCODE ntxOrderCondition( NTXAREAP area, LPDBORDERCONDINFO pOrdCondInfo
{
#ifdef HB_EXTENSION
if( pOrdCondInfo )
pOrdCondInfo->fNoOptimize = hb_parl( 17 );
pOrdCondInfo->fNoOptimize = hb_parl( 18 );
#endif
return SUPER_ORDSETCOND( ( AREAP ) area, pOrdCondInfo );
}

View File

@@ -574,6 +574,8 @@ ERRCODE hb_waOrderCondition( AREAP pArea, LPDBORDERCONDINFO param )
{
if( pArea->lpdbOrdCondInfo->abFor )
hb_xfree( pArea->lpdbOrdCondInfo->abFor );
if( pArea->lpdbOrdCondInfo->abWhile )
hb_xfree( pArea->lpdbOrdCondInfo->abWhile );
if( pArea->lpdbOrdCondInfo->itmCobFor )
{
hb_itemRelease( pArea->lpdbOrdCondInfo->itmCobFor );