Después de desarrollar varias aplicaciones utilizando Microsoft Access, uno descubre que existen algunas prácticas y formas de trabajo que simplifican su desarrollo y el mantenimiento, sobre todo cuando la aplicación empieza a crecer más de lo que tenías previsto (cosa que suele pasar casi siempre).
Seguramente Access no es una base de datos que pueda soportar una gran aplicación con multitud de usuarios accediendo al mismo tiempo, que maneje una gran cantidad de datos, o con requisitos complejos de rendimiento o seguridad. Pero como herramienta que permite implementar una aplicación completa (desde las tablas de datos hasta interfaces de pantalla o informes impresos) para unos pocos usuarios de manera rápida, hay que reconocer que tiene pocos rivales. Los desarrollos con Access son tan rápidos que puede utilizarse como una herramienta de prototipado que ayude a definir claramente los requisitos de usuario antes de pasar a un sistema más potente.
1. Define bien las tablas y sus relaciones
Los desarrolladores conocen lo importante que es tener un buen modelo de datos en su aplicación. Y en Access, eso se convierte en la pantalla de Relaciones (dentro del menú Herramientas):
Es decir, define globalmente los campos de cada tabla y las relaciones entre tablas, para toda la aplicación, tal como son en la realidad (no como deberían ser). No definas tablas, campos y relaciones para necesidades puntuales que puedas tener en un formulario o informe concreto.
En concreto, evita las listas de valores y conviértelas en tablas. Si vas a guardar todos tus CD y libros en la base de datos, no introduzcas el “tipo de objeto” como una lista de valores en un campo de la tabla “Objetos” o de un formulario; mejor crea una tabla “Tipos de objeto” y guarda los valores “libro” y “CD” como registros. Si más adelante quieres añadir un nuevo tipo de objeto (como “DVD”), bastará añadirlo a la tabla y te evitarás tener que buscar todos los puntos donde está especificada la lista de valores.
[Actualización 03-mar-2008]
Tal como indica javieran en un comentario, es conveniente crear las relaciones desde el diseño de tablas. Para eso, basta con seleccionar la pestaña “Búsqueda” y la opción “Mostrar control” > “Cuadro combinado”, seleccionando una tabla como “Origen de la fila”; todo esto cuando se defina un campo que obtiene los valores de otra tabla previamente creada (lo que se conoce como “clave externa“).
Siguiendo con el ejemplo anterior, se trataría de utilizar esa opción cuando se defina, dentro de la tabla “Objetos”, el campo “Tipo de objeto” para que indique si cada registro es un libro, un CD o un DVD.
Esta acción tiene dos efectos:
- En vez de un cuadro de texto, la interfaz de Access mostrará automáticamente un cuadro combinado para seleccionar uno de los valores existentes.
- Se crea una relación entre ambas tablas (por defecto, sin integridad referencial)
2. Evita el código
Sí, se puede programar en Access usando Visual Basic como si fuera un entorno de programación “tradicional”. Pero seguro que al menos el 90% de las funciones de tu aplicación las puedes realizar definiendo tablas, consultas, formularios, etc. Evita en lo posible introducir código Visual Basic en tu base de datos; puede ser difícil de entender, su mantenimiento es complicado (sobre todo porque puede estar disperso en diferentes objetos de la base de datos), y es una posible fuente de problemas a la hora de manejar diferentes versiones de Access.
3. Usa consultas en vez de campos calculados
Es muy probable que ese campo calculado que necesitas en un determinado formulario te sea también útil en otro formulario, en un informe, … Es más práctico que definas una consulta y añadas, además de los campos de la tabla, ese tipo de campos calculados; después, basa tu formulario o informe en la consulta, en vez de hacerlo directamente sobre la tabla.
En concreto, yo utilizo una única consulta de ese tipo para cada tabla; si la tabla es “Personas”, la consulta toma por nombre “Personas+”, y le añado todos los datos asociados a “Personas” que me puedan ser útiles. Por ejemplo, si la persona incluye su código postal, puedo añadir como campo calculado el literal de la provincia a la que pertenece ese código. Luego, los formularios e informes se basan en “Personas+” y sólo tengo que añadir el campo calculado para mostrar la provincia de modo automático.
NOTA 1: Las “consultas” de Access engloban, además de otro tipo de objetos, lo que en sistemas de bases de datos se conocen normalmente como “vistas“.
NOTA 2: Es posible que utilizar las consultas de ese modo no sea un modo óptimo de recuperar los datos (y, en concreto, de aprovechar los índices). Pero dados el pequeño volumen de datos y las necesidades que se suelen manejar en este tipo de aplicaciones, mi experiencia es que la claridad y la facilidad de mantenimiento compensa un posible peor rendimiento. Y para mejorar el rendimiento (casi) siempre se está a tiempo.
4. Reutiliza los objetos
No definas un nuevo objeto (formulario, informe, consulta, …) para cada necesidad que tengas. Piensa si puedes reutilizar alguno de los que ya existen, por ejemplo añadiéndole nuevos campos. O utilizando uno general y aplicando filtros.
Por ejemplo, si tu base de datos almacena los libros que le has prestado a tus amigos, no definas una consulta para obtener qué libros tiene Alberto, otra diferente para saber qué libros tiene Eva, etc. Define una única consulta que devuelva todos los libros, permitiendo filtrar por la persona que los tiene.
5. Haz copias de seguridad. A menudo.
Ya sabemos que Microsoft Access no es un sistema pensado para ser especialmente robusto; no olvidemos que todo (datos, interfaces, etc.) está almacenado normalmente en un único fichero. Y si hay algún problema con ese fichero (y tarde o temprano los hay), podemos fácilmente perder toda la información que tenemos.
Hacer una copia de un único fichero es sencillo. Hazlo frecuentemente con tu fichero Access.
Y con todo eso…
Seguir esos consejos te permitirá mantener más o menos controlada y organizada la base de datos. Y, si es necesario, hará más fácil la migración a un gestor de bases de datos más “serio”. Incluso en ese caso te puedes plantear mantener la interfaz de usuario en Access, simplemente sustituyendo sus tablas por vínculos a tablas en el gestor de bases de datos elegido.
Yo solo incluiría un único paso:
Migrar a un SGBD decente.
simple, rápido y eficaz.
Sobre el comentario de seiju, ¿conoces alguna base de datos que NO necesite instalación como Access y que ofrezca las mismas opciones?
Os puedo decir que en alguna ocasión he buscado una alternativa (open software) a Access, y no la he encontrado. Sí, ya sé que se pueden combinar diferentes productos, pero ni la instalación ni el desarrollo son tan rápidos como con Access.
En ningún momento digo que Access sea una solución universal, pero sí tiene su utilidad en determinadas ocasiones.
Yo añadiría que antes de crear ningún formulario e informe y continuando con el punto uno “Definir tablas y relaciones”
rellenaría en todos los campos relacionados con otras tablas la opción en la pestaña de BUSQUEDA de “Mostrar control”–> Cuadro combinado–>origen de la fila
con la tabla de la que se cogen los valores de ese control, los campos que quieres ver, los anchos, etc. Incluso haría una consulta basada en la tabla y ordenada por los campos que quiera para que el combo ya salga ordenado.
Así cuando cree un nuevo formulario o informe, directamente saldrá ese campo como un cuadro combinado y no como un cuadro de texto.
Seguro que ya lo sabe mucha gente. Pero ayuda infinitamente a facilitar el trabajo de creación de formularios e informes.
Eso si, insisto antes de hacer ni un sólo formulario revisar todo el diseño mil veces.. (luego siempre hay que añadir mas cosas) pero cuanto mejor esté el diseño menos problemas tendrás después.
Un saludo
javiteran,
lo que comentas estaría, como dices, incluido en el punto “1. Definir tablas y relaciones”; de ese modo creas las relaciones automáticamente (aunque sin integridad referencial por defecto).
Lo añadiré al artículo. Gracias 🙂
Si, tienes razón, la integridad referencial es obligatoria…lo que yo digo es para comodidad posterior. De verdad, a mi me parece imprescindible.
Gracias a ti por estos consejos
Hola, mil gracias portus consejos sobre access. Quisiera preguntarte si me puedes ayudar con una base para manejo de kardex que tengo que hacer, pero no se como se hace para que me controle la cantidad en existencia, osea: Saldo inicial + Entradas – Salidas. Te agradecería si me escribes o posteas para ayudarme.
Gracias!
Respuesta a Juan Cardona: El control de las existencias debes hacerlo a partir de fechas final e inicial. Definidas, por supuesto como un criterio de una consulta relacionado con las sumatorias de entradas y salidas
hola, pregunto si hay algun programa que me ayude con el diseño de las base de datos. hace algun tiempo lei sobre las herramientos key..?
gracias
las key las puedes nombrar como datos unicos y para generar reportes o kardex como lo que tu quieres hacer te recomiendo crystal report y si es una herramienta adicional a la cual tendrias que conectarte para hacer los reportes que necesites
Hola Muchachos estoy súper contento aprendiendo con ustedes. Todo lo aca expuestos es excelente. Ahora solicito un consejo: Necesito hacer una base de datos para manejar un negocito que vende accesorios, papelería, copias, dulces. y necesito que me arroge inventario diario o semanal o mensual, que me permita agregar los nuevos surtidos y que esto se sume a lo existente. En general agradecería todos los consejos y ayudas al respecto estoy empezando con Access y estoy súper fascinado
Genial post!!! Muchos consejos útiles y para tener en cuenta, se agradece. Siempre es bueno repasar todas estas cosas por más que parezcan obvias en algunas cuestiones, son las pequeñas cosas las que causan los grandes problemas.
Menos mal que he dado con esta informacion. Gracias! Besos!
Valla, pues me viene como anillo al dedo esta informacion, esto empezando con access y pretendo hacer algunas bases de datos para llevar el control de inventarios, proyectos y avances, y equipo de computo de la pequeña empresa donde trabajo, agradezco mucho esta info que nos ayuda a los mas neófitos en el tema. Saludos.
Me causa extrañes ver q evitan el codigo vba en accses yo lo he usado en excel y me va muy bien, claro con pocos dtos hoy estoy emigrando a accses xq le veo potencial
¿sera buena opcion tomando en cuenta no soy programador profesional?
Access es muy bueno, foro, José no dudes en usarlo y antrarle al tema… además que t epotenciaras mas con VBA y su código…. puedes hacer mucho. Yo trabajo el excel también a nivel de código y he hecho un par de travesuras en ese tema. Saludos,
Respondo a 1.seiju:
El Access es un muy bien programa de base de datos y a partir del office 12 ni hablar. Pero no es un sistema que hace magia. El diseñador debe conocer del modelo y álgebra relacional. A pesar de estar diseñado para un uso personal o de pequeñas y medianas organizaciones permite crear potentes aplicaciones que van desde las tablas hasta los reportes y en todos ellos las opciones que brinda es para chuparse los dedos. Es el programa profesional por excelencia de la suite de MS. Creo que la mejor opción es aprender a utilizarlo.
Hola, quisiera pedir ayuda u orientación para armar una tabla con un campo calculado .
Son caudales diarios cada 2 horas por 365 dias del año.
Vale decir que tengo por dia 24 caudales diferentes resultado de un calculo de dos campos de un mismo registro.
Cómo puedo hacer??