Estructura de archivo DBF

El archivo DBF, contiene una tabla que está formada por el encabezado del registro y datos de los mismos.
El encabezado del registro, define la estructura del archivo y contiene cualquier información relacionada con la tabla. El encabezado del registro inicia en la posición cero. Los registros de datos son seguidos del encabezado, en bytes consecutivos, los cuales contienen el texto actual de los campos.

Nota importante. El registro de los datos de la tabla, inician en la posición indicada en bytes del 8 al 9 del encabezado del registro.El registro de los datos, del archivo de datos se inicia en la posición indicada en bytes, esto es de la posición 8 a la 9 del encabezado. Los registros de datos comienzan con una bandera de eliminación, de tamaño de un byte. Si este byte es un espacio en ASCII (0x20), el registro no se elimina. Si el primer byte es un asterisco (0x2A), se elimina el registro. Los datos de los campos nombrados en los campos subregistro, son seguidos de la bandera de eliminación..

La longitud de un registro, es en bytes y esta se define al sumar la longitud de los campos del registro. Los tipos enteros en una tabla son almacenados con el primer byte menos significativo.

Encabezado de la estructura de la tabla de registro

Desplazamiento de Bytes Descripción
0 Tipo de archivo:
  • 0x02 FoxBASE
  • 0x03 FoxBASE+/Dbase III plus, sin campos memo
  • 0x30 Visual FoxPro
  • 0x31 Visual FoxPro, autoincremento habilitado
  • 0x43 dBASE IV SQL archivos tabla, sin campos memo
  • 0x63 dBASE IV SQL archivos de sistema, sin campos memo
  • 0x83 FoxBASE+/dBASE III PLUS, con campos memo
  • 0x8B dBASE IV con campos memo
  • 0xCB dBASE IV SQLarchivos tabla, con campos memo
  • 0xF5 FoxPro 2.x (o anterior) con campos memo
  • 0xFB FoxBASE
1 - 3 Ultima actualización (YYMMDD)
4 – 7 Número de registros en el archivo
8 – 9 Posición del primer registros de datos
10 – 11 Longitud de un registros de datos, incluyendo la bandera de eliminación
12 – 27 Reservado
28 Tabla de banderas:
  • 0x01 el archivo tiene una estructura .cdx
  • 0x02 el archivo tiene archivo con campos Memo
  • 0x04 el archivo es una base de datos (.dbc)
Este byte puede contener la suma de cualquiera de los valores antes mencionados. Por ejemplo, el valor 0x03 indica que el archivo DBF tiene una estructura.cdx y tiene campos Memo.
29 Código marca de página
30 – 31 Reservado, contiene 0x00
32 – n Campos subregistro
El numero de campos determina el numero de campos subregistro. Un campo subregistro existe para cada campo de la tabla.
n+1 Finalizador del encabezado del registro (0x0D)
n+2 to n+264 Un rango de 263 bytes, contienen el vínculo de retroceso, el cual es la ruta de acceso relativa a la base de datos asociada (. dbc). Si el primer byte es 0x00, el archivo no está asociado a una base de datos. Por lo tanto, los archivos de base de datos siempre contienen 0x00.

Estructura de campos subregistro

Desplazamiento de Bytes Descripción
0 – 10 El nombre del campo es como máximo de 10 caracteres. Si es menos de 10, se rellena con caracteres nulos (0x00).
11 Tipo de campo:
  • C – Carácter
  • N – Numérico
  • F – Flotante
  • D – Fecha
  • L – Lógico
  • M – Memo
  • G – General
  • C – Carácter (binario)
  • M – Memo (binario)
  • B – Doble
  • I – Entero
  • Y – Monetario
  • T – Fecha-Hora
  • P – Imagen
12 – 15 Desplazamiento de campo en el registro
16 Longitud del campo (en bytes)
17 Numero de decimales
18 Campo de Banderas:
  • 0x01 Columna de Sistema (invisible para el usuario)
  • 0x02 Columna que puede almacenar valores nulo
  • 0x04 Columna Binaria (solo para CHAR y MEMO)
  • 0x06 Cuando un campo es NULO y binario (Entero, Monetario y campos del tipo Carácter o Memo)
  • 0x0C Columna de autoincremento
19 - 22 Siguiente valor de autoincremento
23 Siguiente paso, valor de autoincremento
24 – 31 Reservado