On Mon, 07 Jul 2008, Randy Portnoff wrote: Hi Randy,
> When at EOF() and attempt to replace a field, get runtime error as > "Variable does not exist" - This is better than Clipper which does > not throw an error at all, but I think a more meaningful error > message should be used like: "Attempt to update record while at EOF". I can imagine valid Clipper code which uses this behavior intentionally, f.e. to drop new record data by simple disabling APPEND BLANK instruction without interrupting the execution context so such modification will break it. If you need such functionality then you can make it yourself very easy using USRRDD library and overloading PUTVALUE method, f.e. see code below. best regards, Przemek #include "rddsys.ch" #include "hbusrrdd.ch" ANNOUNCE MYRDD REQUEST DBFCDX STATIC FUNCTION MYRDD_GenErorr( nWA, nField, xValue ) LOCAL oError oError := ErrorNew() oError:GenCode := EG_UNSUPPORTED oError:SubCode := 9999 oError:Description := "Attempt to update record while at EOF" oError:CanDefault := .T. UR_SUPER_ERROR( nWA, oError ) RETURN FAILURE STATIC FUNCTION MYRDD_PUTVALUE( nWA, nField, xValue ) IF EOF() RETURN MYRDD_GenErorr() ENDIF RETURN UR_SUPER_LOCK( nWA, nField, xValue ) FUNCTION MYRDD_GETFUNCTABLE( pFuncCount, pFuncTable, pSuperTable, nRddID ) LOCAL cSuperRDD := "DBFCDX" /* We are inheriting from DBFCDX */ LOCAL aMethods[ UR_METHODCOUNT ] aMethods[ UR_PUTVALUE] := ( @MYRDD_PUTVALUE() ) RETURN USRRDD_GETFUNCTABLE( pFuncCount, pFuncTable, pSuperTable, nRddID, ; cSuperRDD, aMethods ) INIT PROC MYRDD_INIT() rddRegister( "MYRDD", RDT_FULL ) RETURN _______________________________________________ Harbour mailing list Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour