>nFCount = _screen.FormCount >for i = nFCount to 1 step -1 > if type("_screen.forms(i)") = "O" > =aMembers(laDummy,_screen.forms(i),1) > * looks to see if the object has a release method > lnElem = (aScan(laDummy,"RELEASE") + 1) / 2 > if lnElem >= 1 and Upper(laDummy(lnElem,2)) = "METHOD" > _screen.forms(i).release() > else > release _screen.forms(i) > endif > release all like laDummy* > endif >endfor>If 4 forms are open, this would release forms(4) first, forms(3) next, etc. This would seem to release the forms in the wrong order. To me the correct order is to release the last opened form first. So I reversed the order (for i = 1 to nFCount) and always release forms(1) instead of forms(i) because when forms(1) is release forms(2) becomes forms(1), and so on. This whole process crashed and burned because tables were closed prematurely because a parent form was closed before a child form. When the child form was released, you get error messages that the expected tables are no longer open.