1 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
ndice
1. Utilizar objetos de acceso a datos con archivos de texto
2. El archivo de informacin de esquema Schema.ini
2.1. Estructura de los archivos Schema.ini
2.2. El formato de archivo
2.3 Nombres, longitud y tipos de campos
2.4 Juego de caracteres
2.5 Otras opciones de formato y conversin de tipos de datos
2.6 Crear un archivo Schema.ini con el Administrador de orgenes de datos ODBC
2.7 Ejemplos de archivos de informacin de esquema Schema.ini
3. El delimitador de texto y la opcin TextDelimiter
4. Abrir directamente un archivo de texto
4.1. Mediante DAO mostrando los datos en un DBGrid
4.2. Mediante ADO visualizando la informacin en un DataGrid
4.3. Mediante ADO utilizando el driver de texto ODBC
4.4. Utilizando ASP con un origen de datos (DSN)
5. Vinculacin de archivos de texto
5.1. Vincular con ADOX un archivo de texto a una base de datos Access
5.2. Utilizar DAO para vincular un archivo de texto
6. Cmo crear y eliminar una tabla de texto
7. Cmo importar los datos de un archivo de texto
7.1. Importar los datos a una base de Access
7.2. Importar los datos a una hoja de clculo Excel
7.3. Importar los datos a otro archivo de texto
8. Cmo exportar los datos desde el propio archivo de texto
9. Cmo exportar datos a un archivo de texto
9.1. Exportar los datos de una tabla de Access
9.2. Exportar los datos de una hoja de clculo Excel
10.Aadir registros a una tabla procedentes de un archivo de texto delimitado
10.1.Desde la propia base de datos Access activa
10.2.Desde el propio archivo de texto activo
11.Aadir nuevos registros a nuestro archivo de texto
11.1.Desde un archivo de dBASE activo
11.2 Desde el propio archivo de texto activo
06/12/2013 8:31 p. m.
2 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
Campo
255
64 caracteres
32.766 caracteres
65.000 bytes
Otra limitacin importante que presenta el ISAM de Texto del motor Microsoft Jet, es que slo
nos permitir aadir nuevos registros al archivo de texto, por lo que no podremos eliminar
registros o actualizar los datos existentes en dicho archivo, ya que obtendremos el siguiente
mensaje de error: Este ISAM no admite la actualizacin/eliminacin de datos en una tabla
vinculada. Por tanto, no podremos ejecutar los comandos DELETE o UPDATE de SQL, as como
cualquier otro mtodo de algn objeto de acceso a datos que implique ejecutar dichas acciones.
Para ms informacin, se puede consultar el siguiente artculo de la Knowledge Base: El driver
de texto ODBC slo soporta la instruccin INSERT.
A la hora de establecer una conexin con un archivo de texto, el contenido de la informacin
necesaria para tal fin se especifica de la siguiente manera:
Elemento
Informacin
06/12/2013 8:31 p. m.
3 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
TEXT
Ruta completa de la carpeta que contiene el archivo
Nombre de la base de datos
de texto
El nombre del archivo de texto, includa su
extensin. Si no se especifica la extensin del
Nombre de la tabla
archivo, sta tomar la extensin predeterminada
.txt.
Por ltimo, si tiene pensado utilizar un archivo de texto en un entorno multiusuario, vyase
olvidando de tal posibilidad, porque cuando se abre un archivo de texto mediante Microsoft Jet,
se tiene acceso exclusivo al archivo, y cualquier otro intento de conexin a dicho or igen de
datos por parte de algn otro usuario, obtendr el correspondiente mensaje de error.
06/12/2013 8:31 p. m.
4 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
[Clientes.txt]
Formato de la tabla
TabDelimited
CSVDelimited
Delimited (*)
FixedLength
Format=CSVDelimited
Respecto al formato delimitado por comas, tengo que hacer la salvedad de que no funcionar en
un sistema operativo con la configuracin regional de espaol, ya que obtendremos el mensaje
de error: El separador de campos de la especificacin de archivo de texto coincide con el
separador decimal o el delimitador de texto.
Esto es debido a que la configuracin regional de espaol utiliza el signo de la coma para
separar la parte entera de la fraccionaria, tanto de un valor numrico como monetario. Por
tanto, tenemos tres posibilidades para evitar el citado error:
Modificar el carcter del smbolo decimal en la configuracin regional de Windows a la
hora de trabajar con los datos de un archivo de texto, de tal forma que sea distinto de la
coma, no olvidando posteriormente restablecer la configuracin anterior a fin de evitar
problemas de interpretacin con otros datos numricos o monetarios.
Elegir otra configuracin regional distinta a la de espaol que no utilice la coma como
smbolo decimal (ingls, por ejemplo).
Debido a que se permite elegir cualquier carcter distinto de las comillas dobles, utilizar
cualquier otro carcter diferente de la coma para delimitar los campos del archivo de
texto, opcin sta que sera la ms acertada para un usuario con una configuracin
regional de espaol. En los ejemplos del presente articulo, salvo que se indique lo
contrario, se utilizar como delimitador de campos el carcter de punto y coma (;), que es
el carcter por defecto del motor Jet establecido en la configuracin del registro de
Windows.
2.3. Nombres, longitud y tipos de campos
Hay que distinguir si el archivo de texto est delimitado por caracteres o es de longitud fija. En
el primer caso, se puede especificar los nombres de los campos de dos formas:
06/12/2013 8:31 p. m.
5 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
A. Escribir los nombres de los campos en la primera lnea del archivo de texto y
establecer en el archivo de configuracin el parmetro ColNameHeader a True. El
utilizar ste parmetro anula el valor FirstRowHasNames, establecido en el
Registro de Windows, slo para ste archivo.
B. Especificar en el archivo de configuracin cada campo por su nmero,
asignndole al mismo tiempo el nombre y el tipo de datos del campo.
En el supuesto de archivos de texto de longitud fija, slo se puede especificar cada campo de la
forma expuesta en el apartado B.
Para determinar los tipos de datos que contendrn los campos se puede especificar el parmetro
MaxScanRows, de sta forma le indicamos al motor de base de datos el nmero de filas que
debe examinar para que nos indique el tipo de campo de aqullos. Al igual que los dems
valores, el establecer ste parmetro anular el valor existente en el registro de Wi ndows para
ste archivo en particular. El valor puede ser cualquier nmero; si el valor es cero (0), se
examinar todo el archivo.
A continuacin se muestra un ejemplo que utiliza los datos de la primera fila del archivo de
texto para determinar los nombres de los campos. Asimismo, se le indica que examine el
archivo completo para poder determinar los tipos de datos que contienen:
ColNameHeader = True
MaxScanRows = 0
Como se ha dicho anteriormente, la opcin del nmero de columna Coln para la definicin de
los campos de la tabla, es opcional para los archivos delimitados por caracteres y obligatorio
para los archivos de longitud fija. La sintaxis es la siguiente:
Coln = nombre_columna tipo [Width #]
Parmetro
Descripcin
nombre_columna
tipo
ancho
06/12/2013 8:31 p. m.
6 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
El siguiente ejemplo define tres campos de la tabla mediante la opcin del nmero de columna
Coln, utilizando para ello los tipos de datos de Microsoft Jet:
CharacterSet = ANSI
En lugar de las palabras ANSI/OEM/Unicode, tambin se puede utilizar los valores numricos
850 para el juego de caracteres OEM, 1200 para Unicode, y 1252 para el de ANSI, que sera el
valor predeterminado existente en el registro de Windows para una configuracin regional de
Espaol.
2.5. Otras opciones de formato y conversin de tipos de datos
En el archivo de informacin de esquema Schema.ini se pueden establecer otras opciones para
especificar cmo se convierten o se muestran los datos cuando sean ledos por el motor de datos
Microsoft Jet. Dichas opciones son sumamente importantes si queremos presentar un formato
especfico de fecha, formato de nmero negativo, nmero de dgitos decimales o el smbolo de la
moneda, ya que, de omitir dichas entradas, se utilizarn por defecto los valores que
actualmente se encuentren establecidos en la Configuracin Regional del Panel de Control de
Windows. A continuacin se enumeran las opciones disponibles.
Opcin
Descripcin
CurrencyDecimalSymbol
CurrencyDigits
CurrencyNegFormat
Representacin en
dlares USA
-$1
06/12/2013 8:31 p. m.
7 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
-$1
$-1
$1-
(1$)
-1$
1-$
1$-
8 (Predeterminado)
-1 $
-$ 1
10
1 $-
11
$ 1-
12
$ -1
13
1- $
14
($ 1)
15
(1 $)
Ejemplo: CurrencyNegFormat = 8
CurrencyPosFormat
Descripcin
$1 (sin espacio de
separacin)
1$ (sin espacio de
separacin)
$ 1 (un espacio de
separacin)
1 $ (un espacio de
separacin)
Ejemplo: CurrencyPosFormat = 3
CurrencySymbol
CurrencyThousandSymbol
DateTimeFormat
DecimalSymbol
NumberDigits
NumberLeadingZeros
06/12/2013 8:31 p. m.
8 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
[Poliza.txt]
ColNameHeader=False
Format=FixedLength
MaxScanRows=25
CharacterSet=OEM
Col1=COL1 Char Width 2
Col2=COL2 Char Width 21
Col3=COL3 Char Width 11
Col4=COL4 Integer Width 11
Col5=COL5 Single Width 7
Col6=COL6 Char Width 16
Col7=COL7 Single Width 5
06/12/2013 8:31 p. m.
9 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
[Clientes.txt]
ColNameHeader=True
CharacterSet=ANSI
Format=Delimited(|)
Col1=IdCliente Integer
Col2=Apellidos Char Width 30
Col3=Nombre Char Width 50
Col4=NIF Char Width 9
Col5=Domicilio Char Width 50
Col6=CodPostal Char Width 50
Col7=Localidad Char Width 50
Col8=Telefono Char Width 50
Col9=FechaNto Date
Col10=FechaAlta Date
Col11=Activo Bit
Col12=FechaBaja Date
Col13=Causa Char Width 50
Por ltimo, un ejemplo que muestra los distintos parmetros que se pueden establecer en el
archivo de esquema Schema.ini:
[Ejemplo.txt]
ColNameHeader=True
Format=TabDelimited
MaxScanRows=25
CharacterSet=ANSI
DateTimeFormat=dd/mm/yyyy
CurrencySymbol=Euro
CurrencyPosFormat=9
CurrencyThousandSymbol=.
CurrencyDecimalSymbol=,
DecimalSymbol=,
NumberDigits=2
NumberLeadingZeros=True
06/12/2013 8:31 p. m.
10 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
Si no utilizamos ningn archivo Schema.ini para indicar los valores de ambos delimitadores, al
importar el archivo de texto, los campos Nombre y Domicilio se han dividido, ya que al incluir los
datos una coma, el ISAM lo ha tomado como si de un campo distinto se tratara:
Campo1
Campo2
'Martnez Flores Javier'
Campo3
'Av. Concha Espina
Campo4
34 - 4 B'
Campo5
'Madrid'
Campo6
'28016'
Format=CSVDelimited
TextDelimiter='
Campo1
Martnez Flores, Javier
Campo2
Av. Concha Espina, 34 - 4 B
Campo3
Madrid
Campo4
28016
Si la opcin TextDelimiter es distinta a las comillas dobles, la opcin Format puede contener
dicho carcter de separacin, por lo que ya estamos en condiciones de trabajar con un archivo
de texto delimitado por comillas dobles (").
Por ltimo indicar que, si no deseamos utilizar ningn tipo de carcter como smbolo delimitador
de texto (comillas dobles, simples, etc.), necesariamente debemos de indicar el valor none en el
parmetro TextDelimiter de nuestro archivo de informacin de esquema Schema.ini:
TextDelimiter=none
06/12/2013 8:31 p. m.
11 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
Dim db As Database
Dim rs As Recordset
' Abrimos el archivo de texto, donde indicamos el nombre de
' la carpeta, el modo compartido, el acceso de lectura/escritura,
' y el tipo de la base de datos que vamos a utilizar.
Set db = OpenDatabase ("C:\Mis documentos", True, False, "TEXT;")
' Creo el Recortdset
Set rs = db.OpenRecordset ("Clientes")
' Establezco el Recordset del control Data
Set Data1.Recordset = rs
06/12/2013 8:31 p. m.
12 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
archivo de texto mediante la biblioteca de ADO es la versin del proveedor Jet 4.0; el proveedor
Jet 3.51 no soporta los drivers ISAM de Jet. Si se especifica el proveedor Jet 3.51, en tiempo de
ejecucin se recibir el siguiente mensaje de error: No se pudo encontrar el ISAM instalable.
Para descargar las distintas versiones de los componentes de acceso a datos de Microsoft
(MDAC), visite la siguiente direccin: http://www.microsoft.com/data.
El siguiente ejemplo, abre el anterior archivo utilizando el ISAM de texto del proveedor de datos
Microsoft Jet:
Por ltimo indicar que el punto que separa el nombre del archivo de su extensin, se puede
sustituir por el smbolo #:
06/12/2013 8:31 p. m.
13 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
Es importante resaltar que, en lneas generales, estos valores surtirn efecto siempr e y cuando
no haya un archivo de informacin de esquema en la carpeta donde se encuentre el origen de
datos, porque de lo contrario, el ISAM de texto no los tendr en cuenta, ya que prevalecer la
configuracin existente en el archivo Schema.ini.
Asimismo, de no existir el archivo de informacin, los valores de los parmetros que no se
especifiquen en la cadena de conexin, se tomarn de los existentes en el registro de Windows.
La cadena de conexin del ejemplo anterior, tambin se podra haber especificado de la
siguiente manera:
A diferencia del ejemplo anterior, obsrvese en ste ltimo ejemplo la utilizacin de los pares de
comillas en color rojo, ya que de no indicarse, nos encontraremos con el molesto mensaje de
error No se pudo encontrar el archivo ISAM instalable.
Igualmente, hay que tener precaucin en no separar con un espacio en blanco el signo de
igualacin (=) que sigue a continuacin del nombre de la propiedad Extended Properties,
para especificar el valor de sta, ya que obtendremos otro mensaje de error, en este caso, El
formato de la cadena de inicializacin no cumple la especificacin OLE DB, un sutil error que nos
puede costar perder cierto tiempo en intentar descubrir su origen.
Si no deseamos tener problemas con las comillas dobles o los espacios en blanco a la hora de
especificar los diferentes parmetros que conforman la cadena de conexin, podemos olvidarnos
de la propiedad ConnectionString y asignar explcitamente los valores de las distintas
propiedades de la siguiente manera:
En lugar de indicar la palabra clave DBQ, tambin podemos especificar la palabra DefaultDir, la
cual indicar el directorio por defecto, pero hay que tener en cuenta que, de no especificar
06/12/2013 8:31 p. m.
14 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
ninguna de las dos palabras claves, el controlador ODBC de Texto se conectar al directorio
actual que est establecido como tal en el sistema operativo.
Es importante resaltar que los fallos en la conversin de tipos de campos especificados en el
archivo Schema.ini tienen como resultado que se aplique un valor NULL a la columna afectada.
El siguiente ejemplo utiliza el driver ODBC de texto para devolver el nmero de registros de la
tabla Clientes cuyo archivo de texto se encuentra en la carpeta que contiene nuestra aplicacin:
[ODBC]
DRIVER=Microsoft Text Driver (*.txt; *.csv)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=25
MaxBufferSize=512
ImplicitCommitSync=Yes
06/12/2013 8:31 p. m.
15 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
FIL=text
Extensions=txt,csv,tab,asc
DriverId=27
A continuacin, guardar en el mismo directorio virtual los datos del archivo de texto, creando
para ello un nuevo archivo con el nombre Datos.txt:
IdCliente;Nombre;Total
4300012;"Felipe Serrano Hervs";4250,37
4302015;"Gustavo Prez Garca";7585,59
4303025;"Joaqun Lpez Fernndez";141,53
4305684;"Mara Carmen Castilla Lombardo";1485,77
4300054;"Juan Carlos Armenteros Ruiz";7835,58
Por ltimo, slo nos queda crear el archivo EjemploDSNTexto.asp, por ejemplo, para ejecutar
el cdigo Visual Basic Script:
<%
Option Explicit
Response.Expires = -1000
Response.Write("<p><b><u><font size=3 face=arial>")
Response.Write("Ejemplo de ASP</u></b></font></p>")
Response.Write("<p><b><font size=2 face=arial>")
Response.Write("Abrir un archivo de texto mediante un origen de datos DSN</b></font>
</p>")
Dim
Dim
Dim
Dim
sDSNFile, sScriptDir
sPath, sDSN
sSQL, sColor
cnn, rs
06/12/2013 8:31 p. m.
16 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
Ejemplo de ASP
Abrir un archivo de texto mediante un origen de datos DSN
Id Cliente
4300012
4300054
4302015
4303025
4305684
Nombre
Felipe Serrano Hervs
Juan Carlos Armenteros Ruiz
Gustavo Prez Garca
Joaqun Lpez Fernndez
Mara Carmen Castilla
Lombardo
Total Ventas
4250,37
7835,58
7585,59
141,53
1485,77
06/12/2013 8:31 p. m.
17 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
Microsoft Jet puede uilizar la informacin del archivo Schema.ini, deben residir en la misma
carpeta el archivo de datos y el archivo de informacin de esquema.
Al igual que sucede cuando abrimos directamente un archivo de texto, cuando vinculamos un
archivo de texto el ISAM de Microsoft Jet slo nos permitir aadir nuevos registros al archivo
de texto, por lo que no podremos modificar ni eliminar datos del archivo de texto, ya que
obtendremos el siguiente mensaje de error: Este ISAM no admite la actualizacin/eliminacin de
datos en una tabla vinculada.
5.1. Vincular con ADOX un archivo de texto a una base de datos Access
La biblioteca de ADO no permite vincular un archivo de texto a una base de datos Access. Para
ello tenemos que ayudarnos de la biblioteca Microsoft ADO Ext. 2.x for DLL and Security,
ms conocida en los ambientes de programacin por el nombre de ADOX, la cual es una
extensin de los objetos y del modelo de programacin de ADO. Por tanto, en nuestro proyecto
no hay que olvidarse de hacer referencia a la citada biblioteca.
El siguiente ejemplo, muestra como vincular un archivo de texto, a una base de datos Access
2000:
06/12/2013 8:31 p. m.
18 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
[Clientes fijo.txt]
ColNameHeader=False
CharacterSet=ANSI
Format=FixedLength
Col1=IdCliente Long Width 7
Col2=Nombre Text Width 35
Col3=CIF Text Width 9
El archivo Clientes fijo.txt estar compuesto por los siguientes cinco registros. Si desea probar el
ejemplo, copie y pegue los datos con el mismo formato en el que aparecen aqu:
430001
430002
430006
430012
430015
12111255B
58777000
A33366684
06254000A
55666555Z
06/12/2013 8:31 p. m.
19 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
resultado:
IdCliente
Nombre
CIF
430001CAADA VAZQUEZ, JOAQUIN
12111255B
430002MENDEZ CUBILLO, LORENZO
58777000
430006CONSTRUCCIONES EL BUENO, S.A. A33366684
430012MENDIETA GARCA, FELIPE
06254000A
430015CARRILLO CONTRERAS, ROSARIO 55666555Z
CREATE TABLE Nombre_Tabla (Campo1 Tipo (tamao), Campo2 Tipo (tamao), ...)
A continuacin vamos a generar un archivo de texto de tres campos, utilizando la bibl ioteca de
ADO:
Si vamos a la carpeta que contiene nuestra aplicacin, podemos observar que se ha generado el
archivo de texto donde slo aparecen los nombres de los campos en la primera fila. Asimismo,
tambin podemos observar que se ha creado el archivo de informacin de esquema con los
valores de los parmetros existentes en el registro de nuestro sistema.
Si utilizamos la biblioteca de DAO, el cdigo sera el siguiente:
06/12/2013 8:31 p. m.
20 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
Dim db As Database
' Abrimos la base de datos
Set db = OpenDatabase(App.Path, True, False, "TEXT;")
' Creamos la tabla de texto
db.Execute "CREATE TABLE Clientes#txt (IdCliente LONG, " & _
"Apellidos TEXT (50), Nombre TEXT (25))"
Para los usuarios de DAO, comentar que tambin pueden eliminar el archivo de texto utilizando
el mtodo Delete de la coleccin TableDefs de un objeto Database previamente abierto:
db.TableDefs.Delete "Clientes#txt"
06/12/2013 8:31 p. m.
21 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
06/12/2013 8:31 p. m.
22 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
Nota importante: Pongo especial nfasis en las comillas simples para que el lector observe
correctamente la sintaxis utilizada, ya que es sumamente importante incluirlas para delimitar la
ruta de acceso al archivo y la versin del ISAM instalable que se va a utilizar, procurando dejar
un espacio en blanco entre ambos parmetros.
Es de suma importancia tener en cuenta que, si el delimitador de campos del archivo de texto
no coincide con el especificado por defecto en el registro de Windows, necesariamente
tendremos que especificarlo en la opcin Format del archivo de informacin de esquema
Schema.ini, a fin de que todos los campos se importen correstamente, porque de lo contrario,
slo se importar el primer campo, y tampoco lo har de forma idnea.
7.2. Importar los datos a una hoja de clculo Excel
En el siguiente ejemplo, vamos a utilizar nuestro archivo de texto para importar los datos a un
libro de trabajo de Excel, creando de sta manera, una nueva hoja de clculo. Vuelvo hacer
hincapi en la necesidad de tener un archivo de informacin de esquema para que los datos se
exporten correctamente. Es ms, si la primera fila del archivo de texto no contiene el nombre
de los campos, necesariamente tendremos que establecer a False el valor del parmetro
ColNameHeader del archivo Schema.ini si queremos que se recupere la primera fila como un
registro ms.
06/12/2013 8:31 p. m.
23 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
Dim db As Database
' Establezco la conexin con el archivo de texto
' que deseamos crear, especificando la ruta y
' el tipo de ISAM
Set db = OpenDatabase(App.Path, True, False, "TEXT;HDR=Yes;FMT=Delimited;")
' Construimos la consulta SQL
sTablaOrigen = " ''[TEXT; DATABASE=" & App.Path & "]"
sChainSql = "SELECT * INTO [TextImport#txt] FROM [Clientes#txt] IN " & sTablaOrigen
' Creamos el nuevo archivo de texto
db.Execute sChainSql
' Cierro la conexin
db.Close
A diferencia de los ejemplos anteriores, en ste quiero hacer la salvedad de que necesariamente
tendremos que especificar una extensin para el nuevo archivo de texto, utilizando para ello un
punto (.), o el smbolo #, de tal forma que quede bien definido el nombre y la extensin del
archivo. Y esto es as porque de no especificar la extensin obtendremos el mensaje de error:
No se puede actualizar. Base de datos u objeto de slo lectura. Un error que nos puede acarrear
un verdadero dolor de cabeza si no ponemos especial cuidado en especificar la extensin del
nuevo archivo de texto. Para ms informacin sobre el tema, puede consultar el sigien te
artculo de Microsoft Knowledge Base:
Mensaje de error "No se puede actualizar. Base de datos u objeto de slo lectura"
cuando importa o exporta archivos
06/12/2013 8:31 p. m.
24 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
.Open
' Indicamos la ruta de la base de datos
sConnect = "'C:\Mis documentos\Bd1.mdb'"
' Creamos la tabla
.Execute "SELECT * INTO [TextExport] IN " & sConnect & " FROM [Clientes#txt]"
.Close
End With
A continuacin, vamos a generar un archivo dBASE con los datos de nuestro archivo de texto,
utilizando sta vez, la biblioteca de DAO. Indicar que, si el nombre del archivo de dBASE es
superior a ocho caracteres, no se tendrn en cuenta los caracteres que excedan de dicho
nmero.
Dim db As Database
Dim sConnect As String
' Establezco la conexin con el archivo de texto
' que deseamos crear, especificando la ruta y
' el tipo de ISAM
Set db = OpenDatabase(App.Path, True, False, "TEXT;HDR=Yes;FMT=Delimited;")
' Construimos la consulta SQL para identificar la tabla de destino
' Obsrvese las comillas simples en rojo
sConnect = " ''[dBASE 5.0; DATABASE=" & App.Path & "]"
' Creamos el nuevo archivo de dBASE, cuyo nombre tiene ms de ocho caracteres
db.Execute "SELECT * INTO [TextExport#dbf] IN " & sConnect & " FROM [Clientes#txt]"
' Cierro la conexin
db.Close
06/12/2013 8:31 p. m.
25 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
06/12/2013 8:31 p. m.
26 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
db.Close
06/12/2013 8:31 p. m.
27 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
06/12/2013 8:31 p. m.
28 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
y necesitemos trabajar con los datos en el propio archivo de texto, o bien, para intercambiar la
informacin entre los distintos sistemas de gestin de bases de datos existentes en el mercado.
En el supuesto que nos ocupa, es necesario que el archivo de texto exista previamente en la
carpeta especificada, y que la primera fila contenga el nombre de los campos y estn en el
mismo orden que los campos del archivo o tabla cuyos registros vamos a insertar en nuestro
archivo de texto. Igualmente, y a fin de evitar el oportuno error, si en la conexin con la base
de datos externa se especifica el parmetro HDR, ste necesariamente tendr que ser True, ya
que de nada sirve que establezcamos a True/False el parmetro ColNameHeader en el
archivo de informacin de esquema Schema.ini. Por supuesto, de no especificar el parmetro
HDR, habr de asegurarse que el valor FirstRowHasNames de la clave del registro de
Windows HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text, est establecido a
01, porque de lo contrario, necesariamente tendremos que especificar el parmetro HDR=Yes.
11.1. Desde un archivo de dBASE activo
El utilizar un archivo dBASE, simplemente es para que el lector observe la capacidad de la que
dispone los distintos tipos de ISAM que incluye el motor de base de datos Microsoft Jet, por lo
que prcticamente podemos intercambiar informacin entre diferentes tipos de orgenes de
datos.
A continuacin, y mediante la biblioteca de ADO, vamos a establecer una conexin con un
archivo dBASE, e insertar los registros devueltos por una consulta SQL, en nuestro archivo de
texto:
06/12/2013 8:31 p. m.
29 de 30
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
Tipo
550166
146220
190186
208404
234201
124657
239471
205439
Descripcin
06/12/2013 8:31 p. m.
30 de 30
230265
262537
145769
210001
282263
199068
245407
254002
268264
326548
241477
210073
182354
182355
187670
http://www.mvp-access.es/softjaen/articulos/texto/jet_text_isam.htm
NOTA: El contenido de ste artculo es una recopilacin de las participaciones del autor en el
grupo de noticias en espaol de Visual Basic (microsoft.public.es.vb), as como de la informacin
disponible en los distintos artculos que la Microsoft Knowledge Base ofrece sobre el tema en
cuestin, de los cuales se hace una referencia en el apartado nmero doce.
La informacin contenida en este artculo, as como el cdigo fuente incluido en el mismo, se
proporciona COMO EST, sin garantas de ninguna clase, y no otorga derecho alguno. Usted
asume cualquier riesgo al poner en prctica, utilizar o ejecutar lo explicado, recomendado o
sugerido en el presente artculo.
This article is provided AS IS with no warranties, and confers no rights. You assume all risk for
your use.
06/12/2013 8:31 p. m.