Aplicación access en red

Tengo una aplicación multiusuario en access.
La BBDD de la aplicación es una .mdb que esta alojada en un servidor en red y hay una copia, .mde, que es la que los usuarios utilizan, por eso de que no se puede ver el código ni modificar nada, con las tablas de la BBDD vinculadas en este, también esta en red ya que en local la reacción de la aplicación es prácticamente igual.
A parte que la aplicación es bastante lenta, cosa que he intentado arreglar en muchos casos con diferentes soluciones pero lo único que he conseguido es hacerla un poco menos lenta, pero lo que me trae de cabeza es, ¿por qué cuando muchos usuarios se conectan para actualizar los datos, en ocasiones peta la aplicación y los echa a los usuarios y no les deja volver a entrar hasta que no vuelvo a sobrescribir el archivo .mde por otro igual?
Los archivos .mde crecen a medida que se introducen usuarios en ellos,¿puede ser por esta razón? ¿Qué podría hacer para solucionarlo?
Espero que me pueda echar una mano o por lo menos orientrame un poco porque sucede eso.
Respuesta
1
Pues la solución para lentitud solo puede ser cambiando de gestor de base de datos, usar SQL Server por ejemplo para tu base de datos y linkiar las tablas siempre desde access, ahor hay muchas facilidade para hacer eso, si te decides te ayudo, este problema de la lentitud es porque access no es un gestor de base de datos para una alta concurrencia, pero sql server si, sin embargo access como front-end osea como manejador de formularios y reportes es la herramienta más practica que conozco, con respecto al mde, si se debe al tamaño, lo que debes hacer es activar una opción que se encuentra en herramientas->opciones->en la pestaña general-> activa la opción que dice compactar al cerrar y listo.

2 respuestas más de otros expertos

Respuesta
1
La forma de trabajar sería colgar en el servidor la base de datos que incluya simplemente las tablas, y en cada ordenador la aplicación con consultas, formularios, informes, etc..., y esta aplicación vincularla con las tablas del servidor. Así cada usuario abre la aplicación en su ordenador y lee de las tablas del servidor.
Yo particularmente cuando creo una base de datos que van a usar muchos usuarios y posee miles de datos, creo tablas paralelas en la aplicación de los pc's e importo los datos a estas tablas. Así si tengo la tabla tblTelefonos en el servidor, en el ordenador de cada usuario tendría la misma tabla vinculada y otra tblTelefonosImportada la que al entrar en la aplicación se alimentaría de la vinculada. Lo que se consigue con esto es no ocupar servidor y agilizas las búsquedas. Lo que sí es que si quieres variar datos, evidentemente tienes que cargar sobre la vinculada.
También he de decirte que si te queda colgada la aplicación, debes de avisar a los usuarios para que cierren las base y después con compactarla se suele solucionar el problema.
Una aperta.
Buenas, ante todo gracias por tu contestación, y tan rápida.
Yo tengo un archivo .mdb en red como bbdd y un archivo .mde, con las tablas vinculadas a la bbdd, en red también para que en este entren los usuarios y actualicen los datos, entonces me aconsejas que ese .mde este en cada ordenador, ¿siguiendo con la vinculación de las tablas al .mdb en red no?
¿No producirían errores de actualización el tener un .mde por cada maquina? Ya que los datos se deben estar actualizados al momento, y estamos ablando de cientos de usuarios.
Y una cosilla, eso de que el .mde eche a los usuarios y no los deje entrar hasta que no copio y pego otro .mde (exactamente igual), ¿por qué puede ser? ¿Por la cantidad de usuarios que están en la aplicación? Ya que según tengo entendido los .mde crecen en función de la gente que esta utilizándola.
Yo tengo un algoritmo que me permite, a la hora de hacer el mantenimiento de la aplicación, avisar a los usuarios que en 5 min. se les cerrara la aplicación, y ni con esas reacciona, se cuelga la aplicación y solo deja cerrarla mediante el botón POR, de ninguna otra forma.
Gracias por todo,
Saludos.
Siempre que aprovechemos los recursos de los ordenadores y no del servidor, ganaremos en velocidad y seguridad, por lo que te aconsejo que el programa esté en cada ordenador y vinculado con las tablas de red.
En cuanto a la actualización, podría haber problemas si quisieran actualizar el mismo registro dos usuarios a la vez, aún así el access te avisa y te pregunta si quieres guardar los cambios que has realizado.
También he de comentarte que el hecho de que trabajen tantos usuarios a la vez supone para access un inconveniente, ya que es un sistema que aunque no indican el límite máximo, se ralentiza si existen muchos usuarios en red, lo que te casca la aplicación. En mi trabajo realizo aplicaciones para unos 30 usuarios y aún así cada búsqueda y posterior vuelque de datos lo realizo importando a tablas en los propios ordenadores.
Lo de preparar una aplicación que expulse a los usuarios en un momento dado, supongo que lo has hecho a través de una lectura cada por minutos de una tabla que le indica a la aplicación ejecutada que se cierre. Si es así ten en cuenta que la tabla debe de ser independiente de la base de datos, ya que si casca la base de datos, la tabla de expulsión no funcionará.
Respuesta
1
Lo que te está sucediendo está ocasionado porque access no está proeparado para trabajar con muchos usuarios, porque cada vez que te vinculas con una base de datos en otro lado, access copia la información de la base de datos remota a tu equipo, lo cual implica que se cerciore de la integridad de la información cada vez que un usuario realiza una actualización, de esta forma la base de datos realiza actualizaciones periódicas de todas las tablas y esto provoca una lentitud desesperante en todo el sistema, honestamente una posible solución que te pudiera dar sería que migraras la información de tu .mdb a SQL server, y ligar tus MDE a esta base de datos, lo cual acelerará enormemente tu aplicación, de hecho si puedes realizar en lugar de .MDE un .ADE sería lo mejor para tu aplicación.
Buenas, ante todo gracias por tu contestación, y tan rápida.
Bueno probare a cambiar la bbdd de .mdb a sql server y a ver que pasa.
¿Me podrías explicar un poco mejor eso de que "access copia la información de la base de datos remota a tu equipo"? Y en mi caso que los usuarios utilizan el .mde que esta en red y que tiene las tablas vinculadas a la bbdd que hay en red, ¿esta .mdb?
Otra preguntilla, ¿eso de un .ADE?
¿Qué es otro tipo de formato que podemos dar a una aplicación hecha en access, similar al .mde?
¿Qué características y ventajas tiene sobre un .mde?
Gracias por todo,
Un saludo
Cuando accedes a una base de datos vinculada se crea dentro de tu .ldb (que es un archivo temporal de access que está activo mientras trabajas con tu .mdb) una copia de los datos de la base de datos vinculada, dependiendo de la cantidad de datos a trabajar esta copia se vuelve lenta pues tiene que ir y venir al servidor para actualizar los datos, pero se hace con el fin de que también se note fluidez en tu aplicación, un .ADE es un proyecto de access que en un inicio es un .Adp, si este proyecto se conecta con SQL Server realiza las operaciones desde el servidor y acelera el funcionamiento dentro de tu aplicación, pues sólo trae los datos que consultes en ese momento y no se copia a tu disco duro, sino que realiza las actualizaciones en base a transacciones haciendo el acceso a los datos con menos información y por consiguiente más rápido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas