problema con funcion

hectberlag
30 de Septiembre del 2009
Hola amigos, ya tenia un buen de tiempo sin entrar al foro , he visto cosas muy diferentes en cuanto al diseno pero espero que la atencion siga como antes, bueno ... mi asinto es que creee una funcion de tipo recursivo en vfp y en ocaciones funciona y en ocaciones no y no encuentro el motivo mi funcion deberia hacer lo siguiente, se supune que tengo una tabla def_presupuesto donde defino la estructura de un presupuesto y en ella tengo todos los registros de productos o servicios de un presupuesto con sus correspondiente gerarquia (productos compuestos) resulta ser que necesito que cuando elimine un registro padre se eliminen los hijos, nietos bisnietos y toda su familia, el problema es que en ocaciones se eliminan todos como debe y en ocaciones me deja registros huerfanos... asi que les dejo la funcion por si alguien tiene tiempo y pueda hecharme una ayuda es bienvenida..

FUNCTION fcnRecorreCursorToRemoveFamilly(nProyecto,cNombreCursor,cCodigoPadre,nNivel)
LOCAL cNombreCursorLocal
LOCAL cCodigoPadreLocal
LOCAL cNombreCursorLocal
LOCAL nNivelLocal
cNombreCursorLocal=cNombreCursor
cCodigoPadreLocal=cCodigoPadre
SELECT * from def_presupuesto WHERE def_presupuesto.presupuesto = nProyecto AND def_presupuesto.nivel = nNivel;
INTO CURSOR &cNombreCursorLocal READWRITE
SELECT &cNombreCursorLocal
IF RECCOUNT("&cNombreCursorLocal") > 0 THEN
SCAN
cCodigoPadreNuevo=ALLTRIM(&cNombreCursorLocal..concepto)
nNivelLocal=&cNombreCursorLocal..codigo
cNombreNuevoCursor="CURSORTOREMOVE"+ALLTRIM(STR(INT((100*RAND()))))
fcnEliminarElementoDePresupuesto(nProyecto,ALLTRIM(&cNombreCursorLocal..concepto),&cNombreCursorLocal..codigo)
fcnRecorreCursorToRemoveFamilly(nProyecto,cNombreNuevoCursor,cCodigoPadreNuevo,nNivelLocal)
ENDSCAN
ENDIF
fcnEliminarElementoDePresupuesto(nProyecto,ALLTRIM(&cNombreCursorLocal..concepto),&cNombreCursorLocal..codigo)
cuentaCursores=cuentaCursores+1
*?aryCursores(cuentaCursores)
STORE cNombreCursorLocal TO aryCursores(cuentaCursores)
ENDFUNC

por su atencion muchisimas gracias