Tabla Excel Vinculada

He creado una BD con una tabla vinculada en Excel, cuando dos usuarios intentan consultarla a uno de ellos les aparece la siguiente leyenda "El motor de base de datos Microsoft Access no puede abrir el archivo, otro usuario ya lo ha abierto de forma exclusiva o bien necesita permisos para ver y escribir datos" el caso que esta base de datos la tengo en un disco duro (SimpleTech) externo que hace la función de servidor, el archivo es un catálogo de productos y lo que el usuario hace es seleccionar el producto de esta lista, no he podido conseguir que más de dos usuarios tengan acceso.

3 respuestas

Respuesta
1
Aunque parezca mentira el excel y el access no se llevan nada bien, a la hora de vincular e incluso, algunas veces, al importar da problemas. De todos modos creo que seria mejor importarla y si se actualiza a menudo crear un procedimiento de actualización automático.
Gracias por tu pronta respuesta.
Soy novato, serias tan amable de indicarme como puedo crear el procedimiento para actualización auitomatico.
La función sería:
Function ImportarXLS()
Dim db As Database
Dim tb As TableDef
Set db = CurrentDb
For Each tb In db.TableDefs
If tb.Name = "NombreTabla" Then
DoCmd.DeleteObject acTable, tb.Name
End If
Next tb
DoCmd. TransferSpreadsheet acImport, , "NombreTabla", "D:\Optima\NombreXLS.xls", True, "NombreHoja!"
End Function
NombreTabla sería el nombre de la tabla en access, 1º tendríamos que borrarla y después importarla, este código lo ejecutarías desde una macro, un botón...
Respuesta
1
Yo entiendo porque si esta vinculada, cuando entra un usuario no permite que la abra ningún otro (es lo que hace excel). Pero mi pregunta es ¿Por qué tener una tabla en excel pudiéndola tener en access y olvidarte de esos problemas y de muchos otros?
Gracias por tu pronta respuesta.
¿Por qué tener una tabla en excel pudiéndola tener en access y olvidarte de esos problemas y de muchos otros?
Esta tabla se actualiza constantemente a lo largo del día con nuevos productos el tenerla en access implica hacer importaciones constantemente y soliciatra a los usuariso salgan de la BD, sin embargo ya intente exportarla y NO vincularla y el resultado es el mismo al otro usuario no lo deja acceder.
Bien, vuelvo a preguntar ¿Qué tiene esa tabla de excel para que no pueda ser una tabla access y que sea actualizada las veces que sea necesario, trabajando todos en la misma BD?
Esta tabla es un archivo vinculado de excel el cual contiene un listado de productos (1800 productos), en el diseño de la Tabla General (BD) establecí el "Tipo de Datos" como búsqueda de valores en otra tabla (para seleccionar el producto deseado) elegí la tabla en cuestión de tal manera que en el formulario me despliegue una lista de productos y pueda elegir uno de ellos, el problema es que cuando dos usuarios accede a este formulario me envai el error "El motor de base de datos Microsoft Access no puede abrir el archivo, otro usuario ya lo ha abierto de forma exclusiva o bien necesita permisos para ver y escribir datos".
La situación por la cual no puedo integrarla como una tabla de access es que al actualizar (varias veces al día) los productos en excel que es el origen estos no se actualizan en access (obvio) por ello decidí vincularla ya que al modificar en excel las modificaciones se realizan también en access.
Espero no confundirte más. THANKS
Valeeeee, no se puede actualizar la tabla en access, (si no se puede no se puede)
Entonces te aconsejo que hagas lo siguiente:
En la BD elige "Archivo"/"Obtener datos externos"; selecciona como origen la tabla de Excel. Te preguntara por como dividir los campos, pero como es una tabla excel con darle siguiente lo hará automáticamente, ya que excel lo divide en columnas del mismo tamaño.
Ya tienes el archivo de excel vinculado.
Ahora crea una consulta que contenga todos los campos de esa tabla vinculada y la pones como "consulta de creación de tabla", te pedirá un nombre para la nueva tabla, y ¡ Ya tienes una tabla de access que esta basada en el archivo de excel!
Ahora te vas a esa nueva tabla creada y le marcas una clave principal en un campo de la misma que no se pueda repetir (que no sea el Id que access le pone por defecto) en tu caso podría ser "producto" ya que supongo que ninguno se llama exactamente igual.
Ahora creas una consulta de "Datos anexados" y otra de "actualización" basada en la tabla que tienes vinculada de access.
La consulta de creación de tabla que creamos al principio la puedes borrar.
Posteriormente, bien en una macro, bien en código o como mejor te venga, haces que en el evento que quieras, por ejemplo cuando los usuarios abren el formulario, se ejecuten las dos consultas (Anexados y actualización).
Ahora cada vez que un usuario entre en el formulario, la tabla se actualizara y dejara trabajar a cuantos usuarios fuesen necesarios con una tabla totalmente actualizada.
Solo para tu comprensión, paso a explicarte lo siguiente:
Podría valer también con una consulta de eliminación y otra de creación, pero en cuanto hubiese un usuario en la BD no te dejaría hacerlo.
Lo de la clave (que no se pueda repetir un campo) es porque sino cada vez que ejecutaras la consulta de "Anexados" te volvería a cargar los 1800 productos.
Un añadido.
La ejecución de las dos consultas la puedes poner en el evento que quieras, si por ejemplo, la pones en el evento timer del formulario, cada pongamos 5 minutos, tendrás la tabla con las ultimas moficaciones cada 5 minutos. Pero eso depende de como tengas construida tu BD para que no te de problemas de actualización.
Respuesta
1
Asegurate de que todos los usuarios que abren la base de datos, lo hacen en modo compartido y no en modo exclusivo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas