TTabulens RUPT Windows Open app

Records flagged as deleted: the main source of mismatches

In DBF, deleting does not delete. The record stays where it is, one byte changes, and what happens next depends on whether the program reading the file pays any attention to that byte.

Updated 2026-09-30 · format DBF

How it works

Every record in a DBF starts with a service byte. A space (0x20) means “active”, an asterisk (0x2A) means “flagged as deleted”. The rest of the record is left untouched.

The data physically disappears only after the PACK operation, which rewrites the file keeping active records only. Until then a deleted record is a perfectly readable row, and some programs can even recall it.

Why reports disagree

A typical situation: one program shows 1,638 records, another 1,815, a third exports 1,815 rows to Excel, and the accountant counts 1,638. All three are right — they are simply configured differently.

In dBase and FoxPro the behavior depends on the SET DELETED ON/OFF setting. In ODBC drivers it is a connection parameter. In homegrown exports it depends on whether the developer remembered this byte at all. Generic converters to CSV most often do not, and export everything.

So the first thing to do when numbers disagree is to check how many records in the file are flagged as deleted. Very often the difference is exactly that count.

What to do with them

The flagged records can be filtered and exported to a separate file — for example, to hand to whoever investigates the cause.

Be careful with PACK

Running PACK is irreversible: afterwards nothing short of a backup brings the data back. It also changes physical record numbers, so every external reference to them — in indexes and in other tables — becomes wrong.

For the same reason Tabulens does not pack the file when it saves your edits: changed records are rewritten in place, and the remaining bytes are copied as they were. Record numbers stay the same.

FAQ

How do I restore a record flagged as deleted?

Clear the flag by replacing the asterisk with a space in the service byte. In Tabulens this is done from the row's context menu in edit mode.

Do deleted records affect the file size?

Yes, they occupy space until the file is packed. A file with many flagged records can be twice the size of its useful data.

Why does the index show records that are gone?

Index files (.cdx, .ntx) are updated separately. If the table was edited without the index, it may be stale and has to be rebuilt.

Your file never leaves your computer. Parsing happens in the browser, in a background thread. The page's security policy forbids sending data to third-party addresses — you can check this in the developer tools. After the first visit the app keeps working offline.
Open the app Download for Windows

Free for personal use. Your file is not uploaded to a server. Windows version — 3.5 MB, no installation: details. Organizations: license.