DBF stores rows; FPT and DBT store variable-length content
The DBF extension belongs to the xBase family. A DBF header describes the record count, header length, record length and fields. Records then occupy predictable fixed-size slots. This design works well for short character values, dates, numbers and logical flags, but it is inefficient for notes whose lengths vary from a few characters to many pages.
Memo fields solve that problem by storing a reference in the DBF record and the actual content in a companion file. FoxPro normally uses FPT; dBASE commonly uses DBT. The companion is not an optional cache. If the table contains memo fields, it is part of the database content.
| Extension | Typical role | Important caution |
|---|---|---|
| DBF | Schema and fixed-length records | May contain only pointers for long values. |
| FPT | FoxPro memo or binary blocks | Block size and pointer interpretation depend on the format. |
| DBT | dBASE-family memo blocks | Several generations use different conventions. |
| CDX / IDX / NTX | Indexes and ordering | Useful to the original application, but not the memo content itself. |
How a memo pointer reaches the text
Instead of placing a long note inside every fixed-length DBF record, a memo field identifies a block in the companion file. The memo header defines information such as the next available block and, for FPT files, a block size. The reader multiplies or otherwise interprets the pointer according to the dialect, then reads the memo block header and payload.
This explains a common symptom: names and dates display correctly but the notes column is blank or invalid. The DBF structure can be healthy while the FPT is missing, belongs to a different table version, uses an unexpected block size or ends before the referenced block.
Keep table generations together
File names are only the first pairing clue. Two backups can both contain ORDERS.DBF and ORDERS.FPT, yet mixing their dates can connect current memo pointers to old content. Preserve directory structure, timestamps and backup labels. Compare file modification times cautiously: copying can change timestamps, but a large date mismatch deserves investigation.
- Copy the complete source directory before rearranging any files.
- Pair DBF and memo files from the same backup generation.
- Never rename several memo files to test them against the only DBF copy.
- Record checksums when files may pass through several people or systems.
A symptom-based diagnosis
The memo column is absent
First verify that the DBF field descriptors actually contain a memo-capable type. If not, the notes may live in another related table rather than in a companion file.
The column exists but every value is empty
Confirm that the FPT or DBT was selected and has the same base name. Check whether the viewer reported a format or block-size problem. An entirely missing companion commonly produces this pattern.
Some values work and later ones fail
The memo file may be truncated, or records may refer to blocks added after the available backup. Do not “repair” the pointers in place. Preserve the evidence and follow the memo recovery procedure.
When the DBF header itself looks inconsistent, use the header diagnosis guide. Memo repair and DBF repair are separate problems, and treating them as one can destroy recoverable information.