Estructura de archivos de tabla (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx)

Visual FoxPro usa tablas para almacenar datos que definen distintos tipos de archivos. Los tipos de archivos que se guardan como archivos de tabla son:

  • Tabla (.dbf)
  • Base de datos (.dbc)
  • Formulario (.scx)
  • Etiqueta (.lbx)
  • Menú (.mnx)
  • Proyecto (.pjx)
  • Informe (.frx)
  • Biblioteca de clases Visual (.vcx)

Como estos archivos son tablas en realidad, los puede utilizar y examinar de la misma forma que examina cualquier archivo .dbf.

Un archivo de tabla está formado por un registro de encabezado y por registros de datos. El registro de encabezado define la estructura de la tabla y contiene cualquier otra información relacionada con la tabla. Comienza en la posición de archivo cero. Los registros de datos1 siguen al encabezado (en bytes consecutivos) y contienen el texto real de los campos.

Para obtener información acerca de las estructuras de tabla de los distintos tipos de archivo, vea Estructuras de tabla de archivos de tabla.

La longitud de un registro (en bytes) se determina sumando las longitudes definidas de todos los campos. En los archivos de tabla, los enteros se almacenan con el byte menos significativo en primer lugar.

Estructura del registro de encabezado de la tabla

Desplazamiento de bytes Descripción
0 Tipo de archivo
0x02   FoxBASE
0x03   FoxBASE+/dBASE III PLUS, sin memo
0x30   Visual FoxPro
0x43   dBASE IV SQL archivos de tabla, sin memo
0x63   dBASE IV SQL archivos de sistema, sin memo
0x83   FoxBASE+/dBASE III PLUS, con memo
0x8B   dBASE IV con memo
0xCB   dBASE IV SQL archivos de tabla, con memo
0xF5   FoxPro 2.x (o anterior) con memo
0xFB   FoxBASE
1 – 3 Última actualización (YYMMDD)
4 – 7 Número de registros de un archivo
8 – 9 Posición del primer registro de datos
10 – 11 Longitud de un registro de datos (incluyendo el indicador de eliminación)
12 – 27 Reservado
28 Indicadores de tabla
0x01   el archivo tiene un .cdx estructural
0x02   el archivo tiene un campo Memo
0x04   el archivo es una base de datos (.dbc)
Observe que este byte puede contener la suma de
cualquiera de los valores anteriores. Por ejemplo, 0x03
indica que la tabla tiene un .cdx estructural
y un campo Memo.
29 Marca de página de códigos
30 – 31 Reservado, contiene 0x00
32 – n Subregistros de campo
El número de campos determina el número de subregistros de campo. Hay un subregistro de campo por cada campo de la tabla.
n+1 Final de registro de encabezado (0x0D)
n+2 a n+264 Intervalo de 263-bytes que contiene la información de vínculo anterior (la ruta de acceso relativa de una base de datos asociada (.dbc)). Si el primer byte es 0x00, el archivo no está asociado a una base de datos. Por lo tanto, las bases de datos siempre contienen el 0x00.

1 1 En el archivo de datos, los datos comienzan en la posición indicada por los bytes 8 a 9 del registro de encabezado. Los registros de datos comienzan con un byte indicador de eliminación. Si este byte es un espacio ASCII (0x20) el registro no se borra; si el primer byte es un asterisco (0x2A) el registro es eliminado. Los datos de los campos nombrados en los subregistros de campo van detrás del indicador de eliminación.

Estructura de los subregistros de campo

Desplazamiento de bytes Descripción
0 – 10 Nombre de campo (máximo de 10 caracteres — si hay menos de 10 caracteres, se rellena con caracteres nulo (0x00))
11 Tipo de campo:
C   –   Character
Y   –   Currency
N   –   Numeric
F   –   Float
D   –   Date
T   –   DateTime
B   –   Double
I   –   Integer
L   –   Logical
M   –   Memo
G   –   General
C   –   Character (binario)
M   –   Memo (binario)
P   –   Picture
12 – 15 Desplazamiento de campo en el registro
16 Longitud de campo (en bytes)
17 Número de cifras decimales
18 Indicadores de campo
0x01   Columna de sistema (no es visible para el usuario)
0x02   La columna puede almacenar valores NULL
0x04   Columna binaria (sólo para CHAR y MEMO)
19 – 32 Reservado

Para obtener información acerca de limitaciones de número de caracteres por registro, número máximo de campos, etc., consulte Capacidades del sistema de Visual FoxPro.

Observaciones

Visual FoxPro no modifica el encabezado de un archivo guardado en formato de archivo FoxPro 2.x a menos que se le haya añadido al archivo alguna de las siguientes características:

  • Compatibilidad con el valor nulo

  • Tipos de datos DateTime, Currency y Double

  • Se marca como binario un campo CHAR o MEMO

  • Se agrega una tabla a un archivo de base de datos (.dbc)

    Sugerencia   Se puede usar la siguiente fórmula para obtener el número de campos de un archivo de tabla:(x – 296/32). En la fórmula, x es la posición del primer registro (bytes 8 a 9 en el registro de encabezado de la tabla), 296 es 263 (información de vínculo anterior) + 1 (final del registro de encabezado) + 32 (primer subregistro de campo) y 32 es la longitud de un subregistro de campo.

Vea también

Páginas de códigos compatibles con Visual FoxPro | Tipos de datos y campos | Estructuras de tabla de archivos de tabla (.dbc, .frx, .lbx, .mnx, .pjx, .scx, .vcx) | Capacidades del sistema de Visual FoxPro | Comprobar diferencias en formularios, informes y otros archivos de tabla | Extensiones de archivo y tipos de archivo