Referenciar tablas SQL Server desde aplicación Access VBA

Tengo una base de datos actualmente en Access, y he instalado SQL Server, aún en pruebas. Cuando vinculo desde Access una tabla SQL Server lo hace sin problemas, y puedo operar como una tabla local. Sin embargo cada vez que entro en Access me pide las credenciales de SQL Server, a pesar de que marco que las guarde. Sin embargo no me las vuelve a pedir, solo tengo que pasar por el proceso de autentificación; una vez por cada una de las 40 o 50 tablas. Es farragoso e inoperativo, incluso para una sola tabla. He pensado no vincular las tablas y operar directamente mediante consultas SQL realizadas desde la aplicación, pero no sé como hacerlo. Access Front End está en las máquinas locales (actualmente con un Back End Access en el servidor, y SQL Server está en el servidor.

Las preguntas son:

¿Cual es la forma correcta de referenciar una tabla SQL Server desde Access VBA (la autentificación de SQL Server es la de Windows).

¿Cómo creo una tabla en SQL Server en el servidor, por ejemplo temporal, por código desde mi VBA de la máquina local?

Respuesta
1

Para la primera cuestión me temo que no te voy a poder ayudar mucho, pues aunque tengo hecho conexiones Access-SQLServer (tanto con identificación de windows como mediante usuario/contraseña) no soy un "experto" en la materia. Pero en todos los casos en que he probado, nunca me he encontrado con un problema como el que comentas...

Te comento cómo hago yo las conexiones, por si tu usas otro sistema y por ahí viene el problema:

1º/ Desde la pestaña Datos externos, grupo Importar -> busco la opción "bases de datos ODBC"

2º/ En el asistente, le digo que quiero vincular, luego en la ventana para "seleccionar un origen de datos", voy a la pestaña "origen de datos de equipo" y creo un nuevo origen (botón "nuevo").

3º/ Ahí selecciono el tipo de origen (en función de si lo quiero limitar a un usuario concreto o a cualquiera que acceda al equipo) y luego el controlador SQL Server

4º/ Sigues con el asistente, le doy un nombre a esa conexión, selecciono el servidor SQLServer, el tipo de identificación (Windows o SQLServer, en cuyo caso he de poner el usuario y contraseña) y el único cambio que hago sobre las opciones predeterminadas es elegir la BD a la que conectarme.

Y ya te digo, así siempre me funcionaron correctamente las conexiones.

En cuanto a la segunda pregunta, crea una nueva consulta, sin seleccionar ninguna tabla, y en el ribbon, en la pestaña Diseño -> Tipo de consulta, cambias de "Seleccionar" a "Paso a través". Luego pulsas en la Hoja de Propiedades (en Diseño->Mostrar u Ocultar->hoja de propiedades). En la fila "cadena de conexión ODBC" le das al botón de los 3 puntos que aparece a la derecha y seleccionas el origen de datos al que te conectas (o si lo sabes, lo puedes escribir) Te quedaría una cadena como:

ODBC;DSN=TestSQLServer;UID=Usuario;Trusted_Connection=Yes;DATABASE=PerformanceV3

En la fila siguiente (Devuelve registros) le pones No.

Cierras la hoja de propiedades, y en la vista SQL escribes la SQL de creación o modificación de tabla, por ejemplo:

CREATE TABLE table_name (
    Column1 datatype,
 column2 datatype,
 column3 datatype,
   ...
);

Ejecutas la consulta y listo.

También lo podrías hacer directamente por código VBA, pero si vas a esta dirección (https://accessusergroups.org/espana/grabaciones-de-reuniones/ ), en el vídeo 24 (charla de mayo 2016), tienes la segunda parte de la charla que dio Javier Teran sobre conexiones Access-SQL, y en ella explica cómo hacer consultas de paso a través por código. También puedes aprovechar y ver la charla anterior (Abril 2016) que sería la que explica cómo configurar la conexión Access-SQLServer.

Un saludo.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas