Últimamente he escuchado hablar mucho acerca de vincular tablas con SQL Server…  Desde que inicié este blog he tocado varias veces el tema, pero han ocurrido algunos cambios desde que realicé mi último post acerca del tema y por eso decidí hace otro tema acerca de vincular tablas con SQL Server. 

¿Debería utilizar Linked de Access para vincular tablas con SQL Server?

Utilizar Linked para vincular sus tablas es una gran manera de aprovechar SQL Server en su aplicación. En los viejos tiempos, algunos desarrolladores utilizaban formularios libres y elaboraban códigos para leer y escribir en SQL Server, y con buenas razones:

  • Las redes no eran tan rápidas en ese entonces, ¿recuerdan token rings?
  • ODBC era horrible en los primeros días (Es un placer trabajar con el ahora).
  • Finalmente Access no era tan bueno manejando las conexiones a las tablas como ahora.

Linked te permitía unir los formularios y era fácil diseñarlos, utilizarlos, ejecutar las consultas en Access y hacer búsquedas en las tablas.

Entonces, ¿cuál es el truco?

Hay algunos errores que debes evitar cuando estés utilizando Linked. El primero es, nunca utilizar la combinación de Linked con tablas locales en tus consultas. En su lugar descarga las tablas del servidor, como tablas temporales en tu aplicación o sube tus tablas locales a SQL Server y has todo el proceso en el servidor.

No hagas actualizaciones masivas utilizando Access

Si alguna vez tiene que actualizar una gran cantidad de registros a la vez. Por ejemplo, aumentar los precios en todos los artículos en un 10%, es mucho mejor hacer las actualizaciones a través de una consulta  pass-thru query o en el servidor directamente.

No cargues más datos de los necesarios

He conectado formularios a tablas con millones de registros sin problema, ¿Cómo?

Mediante el uso de la cláusula WHERE del comando DoCmd.OpenForm. Limitando los datos a una fracción  de registros, de la siguiente manera:  Si usted tiene una tabla de clientes llamada tblCustomers y la clave primaria es CustomerID, para cargar solo un cliente en tu formulario  frmCustomersform debes utilizar la siguiente sintaxis:

DoCmd.OpenForm "frmCustomers", WhereCondition="[CustomerID] = " & lngCustomerID

Donde lngCustomerID es la variable que contiene el customerID que tú quieres ver.

Diseña sus tablas de SQL Server de manera que tengan un óptimo rendimiento en Access 

Asegúrese de utilizar mí guía para diseñar tablas de SQL Server para Access:

  • Todas las tablas necesitan tener un campo TimeStamp o RowVersion
  • Todas las fechas deben ser de tipo fecha/hora
  • Todos los campos bit necesitan tener un valor por defecto de 0
  • Todos los campos texto deben ser varchar al menos que usted necesite un carácter. Internacional, entonces utilice nvarchar
Tenga cuidado con los problemas de seguridad.
Si usted guarda su contraseña en sus tablas vinculadas solo conseguirá que otra persona pueda tomarla. En su lugar utilice el método de Ben Clothier’s method , cuando vincules las tablas o  vuelvas a crearlas y a borrarlas  cuando tu aplicación inicie y se cierre. Te recomendamos utilizar Active Directory y Trusted Links.