On Wed, 13 Feb 2008, Przemyslaw Czerpak wrote:
> > Fieldput() in place of REPLACE solves the issue. But then error shits to
> > next REPLACE. After replacing for function call in this IF/ENDIF block,
> > error shits its base. 
> 
> Looks like dynamic symbol table corruption or sth wrong in
> RDD you are using. I'm also not familiar with recent xHarbour
> modifications so I cannot say if sth in core code was not
> changed. Check what shows:
> 
>    ? fieldpos("prpremium"), "["+fieldname(nFieldNo)+"]"
> 
> before 1-st replace. Maybe it will help to locate more precisely
> where is the problem.

And yet another ting. Please check what your RDD makes
in PUTVALUE() method because such error will be reported
if it returns FAILURE. F.e. look at ARRAY RDD in xHarbour,
AR_PUTVALUE() function:

   IF nField > 0 .AND. nField <= Len( aStruct ) .AND. ;
      ValType( xValue ) == aStruct[ nField ][ DBS_TYPE ]
      xVal := PutValue( xValue, aStruct[ nField ][ DBS_TYPE ],;
               aStruct[ nField ][ DBS_LEN ], aStruct[ nField ][ DBS_DEC ] )
      IF !aWAData[ WADATA_EOF ]
         aRecords[ nRecNo ][ nField ] := xVal
      ENDIF
      RETURN SUCCESS
   ENDIF
   RETURN FAILURE

When field type is wrong then it also returns FAILURE but it
does not generate own RT error message so later general message
(field does not exists) is generated by core RDD code. For some
local usage it may be enough but if you need more precise error
message then this code should be changed to:

   IF nField > 0 .AND. nField <= Len( aStruct )
      IF ValType( xValue ) == aStruct[ nField ][ DBS_TYPE ]
         xVal := PutValue( xValue, aStruct[ nField ][ DBS_TYPE ],;
               aStruct[ nField ][ DBS_LEN ], aStruct[ nField ][ DBS_DEC ] )
         IF !aWAData[ WADATA_EOF ]
            aRecords[ nRecNo ][ nField ] := xVal
         ENDIF
         RETURN SUCCESS
      ENDIF
      oError := ErrorNew()
      oError:GenCode     := EG_DATATYPE
      oError:SubCode     := 1020 //EDBF_DATATYPE
      oError:Description := HB_LANGERRMSG( EG_DATATYPE )
      UR_SUPER_ERROR( nWA, oError )
   ENDIF
   RETURN FAILURE

Look at your code and maybe you will find similar situation
and if you update it then more precise error message will
help to locate the source of problem.

best regards,
Przemek
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to