From be9855b1c8b132cc07703f7bbe09521e6fdf51be Mon Sep 17 00:00:00 2001 From: "Alexander S.Kresin" Date: Fri, 14 Jun 2002 16:24:18 +0000 Subject: [PATCH] 2002-06-14 20:25 UTC+0300 Alexander Kresin --- harbour/ChangeLog | 5 +++++ harbour/source/rdd/dbcmd.c | 12 ++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 1083ed2bc9..f5837839d1 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,11 @@ 2002-12-01 23:12 UTC+0100 Foo Bar */ + +2002-06-14 20:25 UTC+0300 Alexander Kresin + * source/rdd/dbcmd.c + ! Bug fixed in rddMoveRecords() - there was a problem with Append From. + 2002-06-14 14:18 UTC+0300 Alexander Kresin * source/rdd/dbcmd.c ! Bug fixed in hb_rddCloseAll() diff --git a/harbour/source/rdd/dbcmd.c b/harbour/source/rdd/dbcmd.c index 368e31faa3..e1c0ea65a9 100644 --- a/harbour/source/rdd/dbcmd.c +++ b/harbour/source/rdd/dbcmd.c @@ -3587,7 +3587,7 @@ static LPAREANODE GetTheOtherArea( char *szDriver, char * szFileName, BOOL creat } /* move the Field Data between areas by name */ -static void rddMoveFields( AREAP pAreaFrom, AREAP pAreaTo, PHB_ITEM pFields, BOOL bNameMatch ) +static void rddMoveFields( AREAP pAreaFrom, AREAP pAreaTo, PHB_ITEM pFields, BOOL bNameMatch, LPAREANODE s ) { USHORT i, f=1; PHB_ITEM fieldValue; @@ -3602,8 +3602,12 @@ static void rddMoveFields( AREAP pAreaFrom, AREAP pAreaTo, PHB_ITEM pFields, BOO f = hb_rddFieldIndex( pAreaTo, (( PHB_DYNS )(pAreaFrom->lpFields + i)->sym )->pSymbol->szName ); if ( f ) { + LPAREANODE s_curr = s_pCurrArea; SELF_GETVALUE( pAreaFrom, i+1, fieldValue ); + if( s ) + s_pCurrArea = s; SELF_PUTVALUE( pAreaTo, f++, fieldValue ); + s_pCurrArea = s_curr; } } } @@ -3702,8 +3706,12 @@ static ERRCODE rddMoveRecords( char *cAreaFrom, char *cAreaTo, PHB_ITEM pFields, { if ( bFor ) { + if ( cAreaFrom ) + s_pCurrArea = s_pCurrAreaSaved; SELF_APPEND( ( AREAP ) pAreaTo, FALSE ); /*put a new one on TO Area*/ - rddMoveFields( pAreaFrom, pAreaTo, pFields, bNameMatch ); /*move the data*/ + if ( cAreaFrom ) + s_pCurrArea = pAreaRelease; + rddMoveFields( pAreaFrom, pAreaTo, pFields, bNameMatch,(cAreaFrom)?s_pCurrAreaSaved:NULL ); /*move the data*/ } if ( lRec == 0 || pFor ) /*not only one record? Or there's a For clause?*/ keepGoing = TRUE;