Fig. 1 El Logo Original
El Encabezado DBF
En este artículo voy a mostrar una forma directa de acceder a la estructura de las Tablas “bases de datos” DBF a través de una interfaz de bajo nivel. Esta forma de acceso es interesante debido a que responde a los mismos principios que el acceso a cualquier otro tipo de archivo estructurado ya sea gráfico, de datos o de presentación, entre otros.
Un Archivo DBF consiste de 3 elementos: un encabezado principal, un encabezado de registros y los registros de datos que pueden estar vacíos.
- Encabezado principal (Primeros 32 Bytes).
- Encabezado de registros (depende de la cantidad de campos).
- Registros de datos (depende de la cantidad de registros).
Download DBase III Plus
Listado del Programa
Los 32 Bytes en Detalle
El encabezado principal define la estructura de Registros del Archivo DBF y contiene cualquier otra información relacionada con la tabla. El Registro de encabezado comienza en la posición cero del Archivo. Los datos de registros están luego del encabezado, en bytes consecutivos y contienen los datos propios de los Campos, tales como el nombre, el tipo de dato al que corresponde y el tamaño.
En la Fig. 2 podemos observar en detalle el Encabezado General, es decir, los primeros 32 bytes correspondientes a una Tabla DBF y contrastarlos con la grilla descriptiva para identificar la función y el valor de los mismos.
Byte desplazamiento | Descripción |
---|---|
0 | Tipo de Archivo DBF |
1 - 3 | Ultima actualización (YYMMDD) |
4 - 7 | Numero de registros en archivo |
8 - 9 | Position del primer registro de datos |
10 - 11 | Largo del registro de datos, incluido el flag de borrado |
12 - 27 | Reservado |
28 | Tabla flags: 0x01 archivo tiene una estructura .cdx 0x02 archivo tiene una Memo campo 0x04 archivo es una base de datos (.dbc) |
29 | Código de marca |
30 - 31 | Reservado, contiene 0x00 |
32 - n | Campo sub registros El Numero de campos determina el Numero de campo sub registros. Un campo sub registro para cada campo de la tabla. |
n+1 | Terminador del Encabezado de Registro (0x0D) |
n+2 to n+264 | Solo Visual Foxpro |
El primer Byte contiene 0x03 y, según consta en la tabla, corresponde a dBase III Plus (abajo hay una lista de los diferentes subtipos de archivos DBF que podemos encontrar).
Tipos de archivo DBF
- 0x02 FoxBASE
- 0x03 FoxBASE+/Dbase III plus, sin memo
- 0x30 Visual FoxPro
- 0x31 Visual FoxPro, incremento automático enabled
- 0x32 Visual FoxPro
- 0x43 dBASE IV SQL table files, sin memo
- 0x63 dBASE IV SQL system files, sin memo
- 0x83 FoxBASE+/dBASE III PLUS, con memo
- 0x8B dBASE IV con memo
- 0xCB dBASE IV SQL table files, con memo
- 0xF5 FoxPro 2.x (o anterior) con memo
- 0xE5 HiPer-Six con archivo SMT memo
- 0xFB FoxBASE
El segundo, tercero y cuarto Byte corresponden respectivamente al año, mes y día de la última modificación. En el ejemplo presentado en la Fig. 2, la fecha es 06/06/2011.
El resto de los Bytes del encabezado son muy importantes porque definen la estructura del archivo y contienen:
- La cantidad de campos que tiene y por ende, el largo del encabezado (32 Bytes adicionales por cada campo).
- La cantidad de registros.
- El comienzo de los datos.
Para más detalles observe detenidamente el listado del programa que hace uso de estos Bytes en sus cálculos.
Si deseamos diseñar una interface que trabaje con archivos DBF, tendremos que tomar en cuenta estos Bytes y modificarlos apropiadamente cada vez que insertemos o eliminemos un registro o si modificamos la estructura de campos del archivo.
Compilación y Ejecución
El programa, al ejecutarlo, recibe el nombre de la tabla como parámetro. Verifico los resultados contrastándolos con los obtenidos con dBase III Plus sobre la misma tabla y confirmo que son correctos.
Mas adelante les presentare el modo de leer la estructura de campos del archivo para poder trabajar con los datos de la Tabla.
¡Hasta Pronto!
Sergio Otaño
0 comentarios:
Publicar un comentario