Mostrando entradas con la etiqueta Especificación de importación/exportación. Mostrar todas las entradas
Mostrando entradas con la etiqueta Especificación de importación/exportación. Mostrar todas las entradas

2014-04-18

Exportar tabla o consulta de Access como CSV

Title Exportar los distintos objetos de Access, tablas, consultas, formularios e informes es relativamente sencillo a través del asistente para la exportación. Puedes encontrar instrucciones detalladas en exportar datos a un archivo de texto

Un aspecto interesante es guardar las especificaciones de exportación para usarlas más adelante, bien en una macro o bien dentro de un módulo de VBA. Vemos a continuación un ejemplo suponiendo que el tipo de fichero que deseamos exportar es (*.csv).

1. Guardar la especificación de exportación.
2. En el diseño de la macro clic sobre Mostrar todas las acciones y seleccionar TransferirTexto. En argumentos de la acción indicamos los parámetros requeridos:


Tipo de transferencia: Exportar delimitado
Nombre de las especificación: estará disponible la especificación previamente guardada.
Nombre de la tabla, o del objeto que deseamos exportar.
Nombre del archivo: ruta completa del archivo de texto al que se va a exportar.
Contiene nombres de campo: sí.
Las dos últimos parámetros no son necesarios en este caso.

En VBA:

Function ExportarCSV()
DoCmd.TransferText acExportDelim, "Especificacion1", "Tabla1", "C:\Ruta\Tabla1.csv", True, ""
End Function
Entradas relacionadas:
Importar una especificación de importación/exportación en Ms Access: dos métodos
Más entradas de especificación de importación/exportación

2014-04-13

Saltar líneas al importar un fichero de texto en Access

Cuando importamos un fichero de texto, Access no permite especificar desde que línea deseamos que comience la importación. Tan solo podemos indicar si la primera fila contiene los nombres de los campos (saltar la primera fila). 

Para poder indicar a Access el número de líneas que debe saltarse antes de comenzar la importación necesitamos guardar previamente la configuración de importación como una especificación. Una vez guardada, los pasos  a seguir son:

1. Botón de inicio, Opciones de Access, clic en Opciones de exploración o presionamos la secuencia ALT+A+O.


2. En Opciones de exploración, seleccionamos Mostrar objetos del sistema y clic sobre Aceptar.


3. En el panel de control podemos ver las tablas del sistema ocultas.


4. Abrimos la tabla MSysIMEXSpecs. Cada registro es una especificación guardada, comprobamos el nombre aquella que deseamos modificar en el campo SpecName. En el campo StartRow, cambiamos el cero o uno si la primera fila tiene encabezado, por el número de filas que queremos saltar. StartRow empieza la numeración en cero. Por tanto, la especificación de importación importará a partir de la fila indicada más uno.


Cerramos la tabla. En nuestro ejemplo saltará 6 filas y comenzará en la fila nº 7.

2013-08-05

Importar un fichero de texto en Access conservando los decimales

Es posible que al importar un fichero de texto, en alguno de los campos numéricos se trunquen los decimales. Una posible causa es que ninguno de los 25 primeros registros de ese campo incluya decimales. Access evalua las 25 primeras filas y determina el tipo de dato para los campos de la tabla. Si no encuentra ningún decimal en los 25 primeros registros de un campo sugiere como tipo de dato el entero largo, en lugar del doble.

Para corregir este comportamiento y conservar los decimales de un campo numérico al que Access asigna el tipo entero largo, tenemos dos opciones dentro del Asistente para importación de texto:

Opción1- 

Seleccionamos el campo (clic sobre la columna correspondiente) y en el desplegable Tipo de dato, escogemos Doble y presionamos Siguiente.


Opción2- 

Hacemos clic sobre Avanzado... y en el desplegable Tipo de dato, escogemos Doble, y clic sobre Aceptar.


Otra manera menos eficiente sería importar el campo como texto y luego transformarlo en numérico con una consulta.

2013-06-12

Reemplazar carácter en un fichero de texto con VBA en Access

Title En alguna ocasión me he encontrado con el problema de descargar un fichero de texto delimitado por comas cuando necesitaba que el delimitador fuera el punto y coma (mal funcionamiento del programa de inteligencia de negocio).

Quizá la mejor opción sería cambiar el delimitador de nuestras especificaciones de importación en Access. Visita este artículo para ver como acceder a las especificaciones guardadas, y modifica el Delimitador de campo.


También tenemos otras alternativas:

1. Usar el Excel, Bloc de notas, u otro editor de texto como Notepad++, para reemplazar un carácter por otro. Cuando el número de ocurrencias es muy grande, millones en el caso de fichero de tamaño considerable, el proceso puede ser algo lento.

2. Utilizar código de VBA acelerando el proceso notablemente, evitando tener que abrir otros programas, reduciendo la probabilidad de errores y pudiendo llamarlo desde una macro u otro módulo.

Hay que copiar el siguiente código en un módulo de Ms Access:
Public Sub ReemplazarCaracteresAccess()

Dim folderPath As String
folderPath = Application.CurrentProject.Path & "\" 'Ruta del Access

Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(folderPath & "Inicial.csv") Then
    Set objStream = fso.OpenTextFile(folderPath & "Inicial.csv", 1, False, 0)
End If
    Set objCopy = fso.CreateTextFile(folderPath & "Final.csv")

For x = 1 To 5  'Se salta el nº de líneas indicadas 
    objStream.readline
Next x
 
Do While Not objStream.AtEndOfStream
    strOldLine = objStream.readline
    i = 1
    NewArray = Split(strOldLine, ",")'Carácter reemplazado: ,
       strNewLine = NewArray(0)
       
    Do Until i = UBound(NewArray) + 1
         strNewLine = strNewLine & ";" & NewArray(i)'Carácter nuevo: ;
         i = i + 1
    Loop
    objCopy.WriteLine strNewLine
Loop

End Sub
Notas: El fichero Inicial.csv debe de estar en la misma ruta del Access. El código creará un fichero Final.csv en dicha ruta con el carácter reemplazado. Borrar estas 3 líneas en el caso de que en el fichero de texto no haya que saltarse líneas en blanco y que provocarían un error:
For x = 1 To 5  'Se salta el nº de líneas indicadas 
    objStream.readline
Next x
También se puede usar este código para ficheros *txt. Ejemplo: Inicial.txt y Final.txt

Entradas relacionadas:

2013-04-23

Importar una especificación de importación/exportación en Ms Access: dos métodos

MÉTODO 1

1. Abrir la base de datos Access que necesita las especificaciones.

2. En la ficha Datos externos,en el grupo Importar, haz clic en Access.

3. Seleccionar la base de datos Access que contiene las especificaciones y hacer clic en aceptar


4. En el menú Importar Objetos, hacer clic en Opciones >>























5. Desactivar la casilla de verificación de las Relaciones, activar la casilla de verificación de Especificaciones de importación/exportación y hacer clic en Aceptar.














 


MÉTODO 2

Otro método menos ortodoxo, que no he encontrado documentado:

1. Abrir la base de datos Access que contiene las especificaciones.

2. En la ficha Datos externos,en el grupo Importar, hacer clic en Archivo de texto.

3. Seleccionar la base de datos Access que contiene las especificaciones y hacer clic en aceptar


 
4. En el Asistente para la importación de texto, clic sobre Avanzado, y en el menú emergente, clic sobre Especificaciones para abrir la especificación que queremos copiar. En Información del campo, clic en la esquina superior izquierda de la tabla y Ctrl + C, para copiar la tabla con las especificaciones.


5. Abrir la base de datos Access que necesita las especificaciones y repetir pasos 1, 2, 3. En el paso 4, en lugar de copiar la tabla con las especificaciones, pegarla con Ctrl + V. Confirmar que desea pegar los registros.

























Aprende a  importar o vincular a los datos de un archivo de texto
Nube de datos