pushOnError("INSERT INTO badTables VALUES(laDbfs[lnI,1], MESSAGE())") FOR lnI = 1 TO ALEN(laDbfs,1) USE (laDbfs[lnI,1]) NEXT popOnError() * And then include these two functions somewhere in your application's stored procedures FUNCTION pushOnError LPARAMETERS pcNewOnError * Store the old IF TYPE("gaErrorStack[1]") != "C" PUBLIC gaErrorStack DIMENSION gaErrorStack[1] ELSE DIMENSION gaErrorStack[ALEN(gaErrorStack,1) + 1] ENDIF gaErrorStack[ALEN(gaErrorStack,1)] = ON("ERROR") * If they specified a new on error condition, set it up IF TYPE("pcNewOnError") = "C" ON ERROR &pcNewOnError ENDIF FUNCTION popOnError LOCAL lcError * Restore what previously existed, if there is any IF TYPE("gaErrorStack[1]") = "C" lcError = gaErrorStack[ALEN(gaErrorStack,1)] IF ALEN(gaErrorStack,1) > 1 DIMENSION gaErrorStack[ALEN(gaErrorStack,1) - 1] ELSE RELEASE gaErrorStack ENDIF ON ERROR &lcError ELSE ON ERROR ENDIF