Microsoft KB Archive/100031

From BetaArchive Wiki

PRB: Creating .IDX with "Not Deleted" Will Order Incorrectly

ID: Q100031

The information in this article applies to:

  • Microsoft FoxPro for MS-DOS, versions 1.02, 2.0, 2.5, and 2.5a
  • Microsoft FoxPro for Windows, versions 2.5 and 2.5a


Creating a .IDX file with "Not Deleted()" and then deleting a record will cause incorrect ordering when a SKIP command is issued.


This is expected behavior for a normal (noncompact) .IDX file.


To ensure that the SKIP command works correctly, add the COMPACT clause to the following line:

   INDEX ON <fieldname> TO <filename> FOR !deleted() COMPACT

Another solution to this problem is to use a .CDX index file because it already is a compact index file.


Steps to Reproduce Problem

1. Create a database named "test" with one numeric field called "num".

   Enter nine records in the database: three 1's, three 2's, and three

2. Issue the following command in the Command window:

      INDEX ON num TO test.idx FOR !deleted()

3. Issue the following commands in the Command window:

      GO TOP

After you delete a record and issue a SKIP command, the record pointer will move from record #1 (the first number 1) to record #5 (the first number 2). Additional reference words: FoxDos FoxWin 2.00 2.50 2.50a KBCategory: kbprg kbprb KBSubcategory: FxprgGeneral

Last Reviewed: June 27, 1995
© 1999 Microsoft Corporation. All rights reserved. Terms of Use.