I was testing a program I wrote and I received an error message
saying, "Index is out of date." I have no idea what this error means. I have
looked everywhere in my Delphi books for some help on this problem, and can't seem to find
any information about it. Can you help me?
This is a BDE/Paradox error message. For newbies, BDE error messages are daunting,
cryptic messages. Actually, even for seasoned veterans, they can sometimes be real
"stumpers." Unfortunately, there's no real good reference available that I know
of, so all I can offer with respect to this error message is my experience.
The "Index out of date" message can mean a couple of things:
- One of the more common causes of this error is one in which you have a couple of copies
of a table existing on your network or machine. For instance, when I develop applications,
I have my application tables residing in my development system, then have copies of them
on my network. When I need to update my tables, I usually do the updates in my development
system, then copy them over to my deployment system on the network. I've run into this
exact error when I've copied only the table (.DB) file and not its accompanying index
file(s) (.PX, .X01, .Y01, etc) as well. You see, when you update a table by changing it in
any way, its index files are also resynched to reflect the changes. So if you copy just
the table to a new place on your system and don't include its family members,
you'll index files that aren't in synch with your table. Okay that's one cause.
- The next cause could be just this: One of your indexes is corrupt. This could be due to
sector errors on your hard disk, or the rare, but possible, direct corruption of an index.
This usually happens if your program abended while performing an update to a table with an
index of some sort. In that case, the index doesn't get updated.
But in any case, the only way I know of to correct the problem is to do the following:
- Open up your table in Database Desktop.
- Restructure it.
- Define/Rebuild all your indexes.
- Save the file.