Cargar datos de un TXT a un TDataset (utilizando ADO) – Parte 2
Continuando con esta entrada (parte 1), nos queda ver como hacer algo similar, pero con un archivo de texto cuyos datos están separador utilizando algun caracter especial (TAB, coma, punto y coma,…)
Por defecto, para la lectura de un fichero de texto medianto ADO (Jet 4.0) se utiliza la información que hay en el registro de windows, que se considera la configuración por defecto. Esta configuración se encuentra en la clave:
‘\SOFTWARE\Microsoft\Jet\4.0\Engines\Text’
Dentro de HKEY_LOCAL_MACHINE y en el valor Format.
De todas formas, para tener un mayor control sobre el procesos para acceder a los datos del fichero de texto, es recomentable (altamente recomendable diría yo) crear un fichero de esquema.
El fichero de esquema siempre tienen el nombre schema.ini y se encuentra en la misma carperta del origen de datos. En el fichero de esquema se definen:
- El formato del archivo.
- El nombre, la longitud y el tipo de cada campo (columnas).
- El juego de caractreres utilizado en el archivo de datos.
- Conversiones especiales para los tipos de datos.
Si tuviéramos un archivo similar a este (aunque aquí he utilizado para el ejemplo el separador ‘–‘ que no parace muy adecuado):
Sierra eléctrica-1-250 Machete-5-2.70 Detergente-1-10 Delantal-2-7.25 Afilador-3-5 Cortacesped-6-95 Televisor plasma-2-200 Caja clavos-4-12 Ordenador-1-300 Caja lápices-2-11 Paquete folios-1-10 |
En nuestro archivo schema.ini debemos añadir lo siguiente para conseguir un acceso correcto a los datos:
- Format=Delimited(-); Para definir nuestro separador de campos
- ColNameHeader=False; Puesto que no están definidas dentro del archivo de texto los títulos de las columnas.
- A continuación nombres y tipos de las columnas.
- CharacterSet=ANSI; Para definir la codificación del texto.
- MaxScanRows=0; Define cuantas líneas escanea el motor para determinar el tipo de datos de cada columna. 0 para todas.
Finalmente nuestro archivo de esquema quedará de compleatado de la siguiente manera:
[Datos.txt] Format=Delimited(-) ColNameHeader=False Col1=Producto char Col2=Cantidad Integer Col3="Precio Total" currency MaxScanRows=0 CharacterSet=ANSI |
El ejemplo completo para acceder a los datos de un TXT utilizando las opciones del Registro de Windows, se pueden descargar desde aquí.
<Descargar ejemplo>
El ejemplo completo para acceder a los datos de un TXT utilizando las opciones de un archivo de esquema schema.ini, se pueden descargar desde aquí.
<Descargar ejemplo>
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…