HOWTO: Reapplying Default Values to Reuse/Recycle Deleted RecordLast reviewed: May 14, 1997Article ID: Q168521 |
The information in this article applies to:
SUMMARYThis article demonstrates how you can retrieve default values for a deleted record being reused or "recycled" in Visual FoxPro 3.x and 5.x.
MORE INFORMATIONIn Visual FoxPro, the DELETE command does not delete a record physically; rather, it only marks the record for deletion. Using the RECALL command unmarks the deleted record. In order to physically delete a record from a table in Visual FoxPro, use the PACK command. Using PACK requires the table to be opened exclusively. In a multi-user environment, it may be difficult to obtain exclusive use of the file for packing. To work around this problem, you can recycle deleted records by using the technique illustrated below. This article assumes you have an existing database and certain fields have default values in the table. The following code snippet does the following:
LOCAL lcDeleted, dExpr, nCount, a_field[1] lcDeleted = set("DELETED") SET DELETED OFF * Looks for deleted record in the table LOCATE FOR DELETED() IF FOUND() * bring it back to life and blank its fields RECALL * blank out the contain of the deleted record BLANK * Retrieve all default values from the base table. FOR nCount = 1 to AFIELDS(a_field) dExpr = DBGetProp(CursorGetProp("SourceName")+ ; "." + a_field[nCount, 1], "Field", "DefaultValue") * if there is a default value, use it IF !Empty(dExpr) REPLACE (a_field[nCount, 1]) WITH EVAL(dExpr) ENDIF ENDFOR ELSE APPEND BLANK ENDIF SET DELETED &lcDeletedIn order to retrieve default values from the database, the database needs to be open at all times. If the database is not open, an error occurs. NOTE: Unused space in memo files will not be recycled. To recover unused space in memo files, you must issue a PACK MEMO command (which requires that the table be opened EXCLUSIVELY). |
Keywords : FxprgGeneral vfoxwin
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |