FUNCTION NewModNumber LPARAMETERS tcTable, tcField LOCAL liModNumber > liModNumber = AssignModNumber( m.tcTable, m.tcField ) REPLACE (m.tcField) WITH m.liModNumber RETURN .T. endfuncDoes the error still persist ?
*--------------------------------------------------------------------------- function do_it() create cursor ppp (ppp I) =afields(aa) use aa[1,10] = 'ValidateMyRecord()' create cursor ppp from array aa select 999 && get off the alias insert into ppp values (2) repl ppp with 500 in ppp endfunc *--------------------------------------------------------------------------- function ValidateMyRecord() acti screen ?'Called' repl ppp with 1000 repl ppp with 1100 repl ppp with 1200 endfunc *--------------------------------------------------------------------------->Hi,
FUNCTION NewModNumber > >LPARAMETERS tcTable, tcField > >LOCAL liModNumber > >liModNumber = AssignModNumber( tcTable, tcField ) >REPLACE ( tcField ) WITH liModNumber IN ( tcTable ) > >RETURN .T. >** End NewModNumber >>I am getting the error "Illegal recursion in rule evaluation" when the REPLACE statement is executed.
*********************************** >** from Craig Berntson's Knowledgebase - 8/24/99 >** used to generate ModNumbers >FUNCTION AssignModNumber > >LPARAMETERS tcTable, tcField > >LOCAL lnArea, liModNumber > >* Save current work area >lnArea = SELECT() > >IF !USED("GeneratePK") > USE sagenpk IN 0 SHARED ALIAS GeneratePK >ENDIF >SELECT GeneratePK >SET ORDER TO TAG GPK_PK > >* FLOCK seems to work a bit better than RLOCK. >* I've never had a problem with it >DO WHILE !FLOCK() >ENDDO > >SEEK UPPER(tcTable) >IF FOUND() > REPLACE gpk_CurrentModNumber WITH gpk_CurrentModNumber + 1 > liModNumber = gpk_CurrentModNumber >ELSE > INSERT INTO GeneratePK ( GPK_PK, gpk_CurrentNumber, gpk_CurrentModNumber ) ; > VALUES ( UPPER( tcTable ), 0, 1 ) > liModNumber = 1 >ENDIF > >FLUSH >UNLOCK > >SELECT (lnArea) >RETURN liModNumber >** End AssignModNumber >>