2011-05-18 16:57 UTC+0300 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt)
* harbour/contrib/rddads/adsx.c
! fixed DBORDERINFO() and ORDNUMBER(), etc. behaviour, for order
specified using tag parameter
This commit is contained in:
@@ -16,6 +16,11 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2011-05-18 16:57 UTC+0300 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt)
|
||||
* harbour/contrib/rddads/adsx.c
|
||||
! fixed DBORDERINFO() and ORDNUMBER(), etc. behaviour, for order
|
||||
specified using tag parameter
|
||||
|
||||
2011-05-18 09:49 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
|
||||
+ contrib/xhb/tests/dll.prg
|
||||
+ dll call sample
|
||||
|
||||
@@ -1180,10 +1180,59 @@ static HB_ERRCODE adsxOrderDestroy( ADSXAREAP pArea, LPDBORDERINFO pOrderInfo )
|
||||
|
||||
static HB_ERRCODE adsxOrderInfo( ADSXAREAP pArea, HB_USHORT uiIndex, LPDBORDERINFO pOrderInfo )
|
||||
{
|
||||
LPMIXTAG pTag = pArea->pTagCurrent;
|
||||
LPMIXTAG pTag;
|
||||
|
||||
if( ! pTag && uiIndex != DBOI_ORDERCOUNT )
|
||||
/* resolve any pending relations */
|
||||
if( pArea->adsarea.lpdbPendingRel )
|
||||
SELF_FORCEREL( ( AREAP ) pArea );
|
||||
|
||||
/* all others need an index handle */
|
||||
if( uiIndex != DBOI_ORDERCOUNT && pOrderInfo->itmOrder && !HB_IS_NIL( pOrderInfo->itmOrder ) )
|
||||
{
|
||||
if( HB_IS_STRING( pOrderInfo->itmOrder ) )
|
||||
{
|
||||
pTag = pArea->pTagList;
|
||||
while ( pTag )
|
||||
{
|
||||
if( ! hb_stricmp( hb_itemGetCPtr( pOrderInfo->itmOrder ), pTag->szName ) )
|
||||
break;
|
||||
|
||||
pTag = pTag->pNext;
|
||||
}
|
||||
|
||||
if( ! pTag )
|
||||
return SUPER_ORDINFO( ( AREAP ) pArea, uiIndex, pOrderInfo );
|
||||
}
|
||||
else if( HB_IS_NUMERIC( pOrderInfo->itmOrder ) )
|
||||
{
|
||||
UNSIGNED16 usOrder = 0, usSearch = ( UNSIGNED16 ) hb_itemGetNI( pOrderInfo->itmOrder );
|
||||
|
||||
AdsGetNumIndexes( pArea->adsarea.hTable, &usOrder );
|
||||
|
||||
if( usSearch <= usOrder )
|
||||
return SUPER_ORDINFO( ( AREAP ) pArea, uiIndex, pOrderInfo );
|
||||
|
||||
pTag = pArea->pTagList;
|
||||
usOrder++;
|
||||
while ( pTag )
|
||||
{
|
||||
if( usSearch == usOrder )
|
||||
break;
|
||||
|
||||
pTag = pTag->pNext;
|
||||
usOrder++;
|
||||
}
|
||||
|
||||
if( ! pTag )
|
||||
return SUPER_ORDINFO( ( AREAP ) pArea, uiIndex, pOrderInfo );
|
||||
}
|
||||
}
|
||||
else if( ! pArea->pTagCurrent && uiIndex != DBOI_ORDERCOUNT )
|
||||
{
|
||||
return SUPER_ORDINFO( ( AREAP ) pArea, uiIndex, pOrderInfo );
|
||||
}
|
||||
else
|
||||
pTag = pArea->pTagCurrent;
|
||||
|
||||
/* resolve any pending relations */
|
||||
if( pArea->adsarea.lpdbPendingRel )
|
||||
|
||||
Reference in New Issue
Block a user