Error al vincular una tabla de sql server desde access

Te comento que es primera vez que voy a mandar una aplicación a la red y me han pedido que la conexión a las tablas de SQLserver, sea automática, independiente del usuario que entre a la aplicación. ¿Mi primer duda es si es absolutamente necesario programar la conexión o basta con la vinculación que hice manualmente y no influye si entra uno u otro usuario? Hasta ahí no tengo problema, por que encontré un código y lo adapté para que se conectara cada vez que se entra, eso es en mi equipo, pero si trato de entrar desde los demás equipos no me reconoce los nombres de las tablas. Adjunto lo que tengo.

Public Function main()
Dim myDB As Dao.Database
Dim myTabledef As Dao.TableDef
Dim myTabledef2 As Dao.TableDef
On Error GoTo Err_handler
Set myDB = CurrentDb
Set myTabledef = myDB.CreateTableDef("dbo_Tabla Region1") 'tabla access
Set myTabledef2 = myDB.CreateTableDef("dbo_Tabla Region2") 'tabla access
DoCmd.ShowToolbar "Ribbon", acToolbarNo
DoCmd.SetWarnings False
DoCmd.DeleteObject acTable, "dbo_Tabla Region1" 'tabla access
DoCmd.DeleteObject acTable, "dbo_Tabla Región2" 'tabla access
myTabledef.Connect = "odbc;driver={Sql Server};" & _
"DATABASE=adiracesql;SERVER=CLSANAMADI01;Trusted_Connection=Yes;DSN=opex;NO OBSTANTE=viewuser;PWD=viewpass;"
myTabledef2.Connect = "odbc;driver={Sql Server};" & _
"DATABASE=adiracesql;SERVER=CLSANAMADI01;Trusted_Connection=Yes;DSN=opex;NO OBSTANTE=viewuser;PWD=viewpass;"
myTabledef.SourceTableName = "dbo.OPEX Iquique" 'tabla server
myTabledef2.SourceTableName = "dbo.OPEX Santiago" 'tabla server
myDB.TableDefs.Append myTabledef
myDB.TableDefs.Append myTabledef2
MsgBox "Se ha conectado con éxito"
DoCmd.SetWarnings True
Exit Function
Err_handler:
MsgBox Err.Number & " - " & Err.Description
End Function

1 respuesta

Respuesta
1

Quieres mantener una conexión permanente a las tablas de SQL Server o solo conexiones temporales.

El tema de las tablas vinculadas hacen que sea Access quien ejecute las consultas en todas las tablas relacionadas en la consulta. O cuando ejecutas una consulta en una tabla vinculada Access trae todos los registros de esa tabla o de las en juego en la consulta. Cuando son cientos o miles de registros este proceso puede ser lento.

Si vas a trabajar con SQL server te recomiendo trabajes con procedimientos almacenados, esto aumentará considerablemente la velocidad de ejecución de tus aplicaciones. Y mucho más si vas a trabajar con multiusuario. Porque con los procedimientos alamcenados todos los procesos de inserción, update, select etc, se ejecutan en el servidor. Access solo envía parámetros a SQL y este los ejecuta.

Respecto a tu consulta no es necesario hacer una cadena de conexión bastará con vincular la tabla, porque cumple con el mismo objetivo. Solo que vía código tendrás que programar.

Yo optaría por tablas vinculadas.

Hola , gracias por tu repuesta, respondiendo necesito una conexión permanente y ya sospechaba que bastaba con vincular manualmente las tablas desde la carpeta compartida, pero los genios de mi departamento de IT me indicaron que debía hacer una conexión para cada usuario que entrara y darle las Password y user genérico, por que no querían crear accesos para las vistas para todos los usuarios.

Con lo que me comentas ya me basta, pero tengo una última duda, y es si puedo dejar el front end y back end en la carpeta compartida y solo brear accesos directos a cada usuario y lo último y perdona la patudes , es que se abre en modo exclusivo siempre y no he logrado hacer entrar a dos usuarios al mismo tiempo,

Saludos.

Para hacer que su base de datos varios usuarios la puedan abrir desde una ubicación en la red, las tablas vinculadas debes estar reverenciando a un equipo o servidor en la red y no de forma absoluta como C:\nombredel archivo.mdb, sino que \\servidor\nombredelabasededatos.mdb

Por ultimo y para poder abrir la base de datos en modo compartido usted debe especificar esto en las opciones de MS Access en el globito de Access en la parte superior izquierda.

Opciones de MS Access - Configuración de Cliente, Avanzada - Modo Predeterminado de Apertura, Uso Compartida.

Si puedes visitar mi sitio web www.solucioninformatica.cl y colaborar con alguna donación bienvenido seas.

Hola estimado, perdón por no responder a tiempo, lo estuve tratando de hacer como lo indicas , la conexión funciona sin tener que programar, pero el tema de poder abrirla al mismo tiempo no me resulta, tengo access 2010 y estoy marcando en la opción Client Settings , Default open mode a Shared, pero inmediatamente al abrir me muestra un candado y a la segunda persona que entra , le indica que se puede abrir.

Existe la posibilidad de , mediante programación , obligar a que se abra en modo compartido?

Saludos.

Ojo que también debes verificar si el sistema bloquea los registros por tabla completa o solo por registro o ninguno. Esto se have en las propiedades del formulario. En Datos. Revisa eso también. Porque si abres un formulario obviamente si esta como bloqueo por tabla el usuario no podrá modificar nada de ese formulario.

Revísalo y me comentas.

Hola estimado, lo revisé pero como está en ingles no estoy seguro de la opción.

Puede influir que se trate de un formulario de navegación.

Saludos.

Envíame la base de datos a [email protected] para verla.

Estimado, la envié , pesa como 23 mega, la clave es 12345

Estimado ya le he respondido, su correo, debe sacar la opción Compactar al Cerrar, ya que eso hace que usted toma la base de datos de forma exclusiva. Yo he podido modificar una tabla desde otra PC y lo pude hacer sin problemas.

Ahora si desea soporte en su equipo, puedo ayudarle a un costo de 14 USD por Hora. A través de Teamviewer. Si esta de acuerdo ya sabe mi correo.

Atentamente. Miguel Ángel Sandoval Sepúlveda.

Hola estimado, no he podido solucionar el problema de la conexión para multiusuario pero me doy por conforme con tu respuesta.

muy agradecido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas