Inicio de sesión

Quién está conectado

Actualmente hay 0 usuarios y 3 invitados en línea.

Sindicar

Distribuir contenido

Importar tablas de Access desde OpenOffice.org Base - parte I

En algunas de las experiencias de migración a OpenOffice.org en las que colaboramos, nos hemos encontrado con usuarios que manejan pequeñas bases de datos desarrolladas en Microsoft Access. En estos casos, para poder prescindir de Access, podemos usar el gestor de base de datos incorporado en OpenOffice.org, denominado Base. Podemos usar Base de dos maneras diferentes:

  • Accediendo desde Base a los datos almacenados en Access.
  • Importando a Base los datos de las tablas de Access.

Mediante el presente tutorial veremos la manera de realizar ambas tareas.

Dado que esta explicación es algo larga, hemos optado por dividirla en tres partes. En la primera -ésta que estas leyendo-, veremos como crear una base de datos que nos permite acceder a las tablas y consultas de Access; en la segunda parte, trataremos de la migración de datos propiamente dicha; reservando la tercera parte del tutorial para ampliar un poco algunos detalles relativos a la personalización de los campos o columnas a migrar.

Hemos ilustrado el texto con diferentes capturas de pantalla, en cuyas miniaturas podéis pulsar para verlas a tamaño real; y al final encontraréis un vídeo demostrativo que muestra todo el proceso.

Tengamos presente que una base de datos de Base se comporta de forma parecida a Access en el sentido de que en un sólo archivo, con extensión .odb almacena tanto las tablas y consultas, como los formularios e informes relacionados; presenta el inconveniente de ser mono-usuaria (no admite conexiones concurrentes), pero tiene la ventaja de poder ser enviada por correo fácilmente.

Tan sólo recomendaríamos esta solución para pequeñas bases de datos de escritorio. Si necesitamos acceso concurrente o la base de datos va a ser algo grande, con decenas de miles de registros, será mucho mejor plantearse la migración a una base de datos "real" como puedan ser MySQL o PostgreSQL (u Oracle si estás en una mega-corporación) Guiño , que igualmente pueden ser accedidas vía formularios e informes desde Base.

También debemos efectuar unas advertencias:

  • Sólo podremos convertir los datos almacenados en tablas y consultas.
  • No podemos convertir directamente formularios ni informes, que se podrán reescribir en Base con bastante facilidad.
  • Tampoco podremos convertir macros o módulos VBA, en cuyo caso habría que estudiar la solución con detenimiento.

Tras efectuar estas consideraciones, nos pondremos manos a la obra. El procedimiento a seguir para exportar tablas y consultas desde Access a Base consistirá en:

  1. crear una base de datos en Base que será la base de datos "contenedora" de los datos finales.
  2. crear otra base de datos en Base, que vincule los datos de la base de datos en Access.
  3. copiar las tablas vinculadas de esta última base de datos a la creada anteriormente.

Así que, en primer lugar, creamos una base de datos vacía (Archivo > Nuevo > Base de datos) seleccionando en el asistente la opción "Crear nueva base de datos"

 

 

En el paso siguiente del asistente escogeremos "Sí, registrar la base de datos", lo que permitirá poder usar los datos de esta base para combinar correspondiencia con el procesador de textos Writer o crear un piloto de datos con la hoja de cálculo Calc.

 

 

Tampoco es imprescindible hacerlo ahora mismo; siempre podemos registrar la base de datos en otro momento mediante Herramientas > Opciones > OpenOffice.org Base > Base de datos > Nuevo

Tras el paso siguiente, en que indicaremos la ubicación y nombre de la base de datos que estamos creando (en el ejemplo neptuno-base.odb), nos aparecerá la interfaz de Base, con una base de datos vacía; observemos en la barra de estado la información que indica que nos encontramos con una base de datos incrustada, que hace uso del motor HSQL . Este tipo de base de datos se comporta de una manera similar a Access, conteniendo en un solo archivo las tablas, consultas, formularios e informes de la misma.

 

 

Luego creamos otra nueva base de datos que permitirá conectarnos con los datos del archivo (.mdb) de Access.

En este caso, escogeremos la opción "Conectar con una base de datos existente" en el primer paso del asistente, para seguidamente escoger el controlador de bases de datos para Access.

 

 

Esto, que resulta tan fácil en Windows, no nos resultará tan sencillo si estamos usando OpenOffice.org en algún sistema GNU/Linux, para el cual no está disponible el controlador de Access. En ese caso se podrá acceder vía ODBC, para lo cual será preciso instalar diferentes utillerías, siendo tema para tratar en otro tutorial.

En el siguiente paso del asistente se nos pedirá seleccionar el archivo (.mdb) que contiene los datos que deseamos importar. En nuestro ejemplo, estamos usando "Neptuno", la conocida base de datos de ejemplo que incorporan todas las versiones de Access.

Como no deseamos acceder desde Writer ni Calc a estos datos (ya accederemos a ellos cuando estén importados en la base de datos que creamos al principio), en el siguiente paso del asistente, le indicaremos que no vamos a registrar la base de datos.

 

 

Después de asignar ubicación y nombre para esta base de datos (en el ejemplo neptuno-access.odb), nos encontramos con que la sección de Tablas, nos muestra todas las tablas y consultas que hay en el archivo Neptuno.mdb. Si accedemos a estos datos y los modificamos, se están modificando los datos en el archivo Neptuno.mdb original.

 

 

 

Observemos como lo que eran consultas en Access, se han importado como vistas de tabla en Base. Una vista, en este contexto, es muy parecida a una consulta, con la diferencia de que una vez creada, no podemos acceder a su diseño, pero su funcionalidad es muy parecida. Si los registros de las tablas se modifican, también las vistas relacionadas con esas tablas mostrarán resultados diferentes.

De hecho, si creamos una vista, podremos comprobar que en Access se ha creado una consulta que se puede ejecutar correctamente, pero no intentemos editarla, pues Access se alocará totalmente, incluso provocando un crash si intentamos acceder a la vista SQL.

¿Qué ocurre si en esta base de datos creamos una consulta? Pues que la consulta se creará y funcionará perfectamente, pero tan sólo en el .odb, no afectando para nada al archivo .mdb.

En la próxima entrega mostraremos como migrar los datos de una a otra, que como podéis intuir es tan sencillo como arrastrar las tablas de la base neptuno-access.odb hasta neptuno-base.odb.  No obstante, hay que tener en cuenta una serie de matices en relación a los formatos de los campos, que posiblemente nos obliguen a personalizarlos de alguna manera.  De eso trataremos en nuestra próxima entrega.

Ahora, podéis ver un vídeo demostrativo de los pasos dados hasta aquí.

 

 

 #

Parte II y Parte III ¿?

Hola,


Me encanto la Parte I y me ha sido muy util.


Comentas en el articulo que habra Parte II y Parte III


Las espero con impaciencia... 


No consigo copiar las tablas de ACCESS en OOo BASE


Y no se como hacerlo. Al arrastrar y soltar de una a otra BBDD, me sale este error


No se pudieron cargar los contenidos de los datos


S1000 General error java.util.NoSuchElementException in Statement


[SELECT * From "copia"]


Un saludo,


 


 

 
 #

Espero poderlo hacer pronto

Muchas gracias por tu comentario, dpenap!

Espero pronto poder publicar las dos partes restantes... el vídeo está hecho pero falta grabar y redactar la explicación.   Después de publicar la parte I me vino una avalancha de trabajo (afortunadamente) ;-) y se me quedó todo abandonado.

Recientemente tengo algo más de tiempo, y ya has visto que le hemos dado la vuelta al sitio, que falta le hacía.  Si no tengo incidencias especiales, en un par de semanas deberían estar subidas.

En cuanto al error que comentas, no lo tengo muy claro en este momento, pero de memoria, alguna de los errores que ocurren es por causa del tamaño de los campos.   Si te encuentras un campo MEMO del Access, en el asistente de importación en Base dile que es un LONG VARCHAR.  Y creo que para campos VARCHAR toma como tamaño predeterminado un valor algo corto, ponlos en 250 caracteres en Base.

Espero que te sea de utilidad.  En caso de recordar alguna otra cuestión, ya añadiré otro comentario.

Saludos

 
 #

Otra cosa solucionada y a la espera de la Parte II y III

Muchas gracias ifanlo!, por tu ayuda,


Ya he solucionado algo, efectivamente iba por la estructura de las tablas.


Cuando hace la copia de la tabla (arrastrando y copiando) de una bbdd a otra de OOo, te solicita si quieres establecer la deficion de cada campo.


Lo que hice fue poner el mismo tipo y tamaño (en la tabla destino) que la que tenia la original.


Y perfectamente me hizo la copia (pero quitando un campo ID_USUARIO (que contiene el NIF del empleado) que me vinculaba con la FOTO del empleado que la tengo en otro directorio (el nombre de la foto es el NIF del empleado, con extension .jpg), con rutas relativas), para evitar incrutarla en la Base de datos y que el tamaño de la Base se dispare exponencialmente.


Estoy con una BBDD OOo sencilla que controla las entregas de TARJETAS DE ACCESO (ID_TARJETA) con los empleados (ID_USUARIO).. para ver cuantas tarjetas se pierden, se dañan, etc... el ID_USUARIO es el NIF que debe mostrarme la FOTO del usuario (el nombre de la foto es el NIF del empleado, con extension .jpg), que la tengo en una carpeta llamada FotosTarjetas2011 que cuelga del mismo directorio donde esta la BBDD OOo.


Esa parte aun no la he resuelto.


Lo dicho espero esa II y III parte y me alegro que el retraso sea por el exceso de trabajo, que nunca bien mal.


Saludos,

 
 #

Iba a recomendarte una visita

Iba a recomendarte una visita a los foros de OpenOffice.org en español, pero veo que ahí mismo ya lo has resuelto:

http://user.services.openoffice.org/es/forum/viewtopic.php?f=31&t=5008#p...

Saludos,

 
 #

resuelto en parte... las Macros aun se me resisten

Asi es,  pero aun estoy atascado con las Macros.


Y sobre todo tengo problemas con BASE de OOo, cuando tienen 2 Tablas y estan relacionadas por 1 campo.


Ejemplo: tabla USUARIOS (ID_USUARIO) y tabla TARJETAS (ID_TARJETAS),
la relacion es 1 usuario puede tener 0 ... N tarjetas


A ver si con un poco de ayudas y sobre todo EJEMPLOS sencillos,
consigo ver la luz al final del tunel..


Saludos,


 


 


 


 

 
 #

Hay un ejemplo muy bueno en el foro de OOo

Humm... veo que no te publicó el comentario la primera vez y debiste repetirlo.  He cambiado el sistema antispam y quizás esté dando falsos positivos.

Hay un ejemplo muy bueno en el foro de OOo:
http://user.services.openoffice.org/es/forum/viewtopic.php?f=31&t=3506

Creo que estudiándolo conseguirás despejar las dudas que te queden.

Saludos,

 
 #

A la espera de la continuación

Gracias por el manual, estoy tratando de cambiar los programas en la empresa pero BASE me tiene paralizado el tema, asi que lo dicho animo y uqedo a la espera de las dos siguientes partes.

Un saludo.

 

Vichucho

 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Búscalo con Google

Comentarios recientes

Encuesta

¿Sobre qué programas esperas encontrar tutoriales y ejercicios en SuperAlumnos.net? :