************************************************ Procedure RWOpen ************************************************ * create a read/write cursor from the currently selected cursor PARAMETER tAlias cAlias= ALIAS() SELECT 0 IF EMPTY(m.tAlias) * ASSERT m.cAlias = 'C_' tAlias= STRTRAN(m.cAlias, 'C_', 'T_') ENDIF USE DBF(m.cAlias) AGAIN ALIAS (m.tAlias) EXCLUSIVE USE IN (m.cAlias) RETURN DBF() ************************************************ Procedure RWClose ************************************************ PARAMETER cAlias PRIVATE cDbf, oldSel oldSel= SELECT() IF ! EMPTY(m.cAlias) SELECT (m.cAlias) ENDIF cCdx= ForceExt(DBF(), 'CDX') && Foxtools USE ERASE (m.cCdx) && doesn't matter if it doesn't exist SELECT (m.oldSel)Note I explicitly remove the CDX file if one exists because I *know* doesn't Fox always delete it automatically.