Ejecutar procedimientos almacenados de SQL Server desde Microsoft Access

Para ejecutar procedimientos almacenados escritos en SQL Server desde Microsoft Access, solo tenemos que recurrir a  ADODB.

A través de esta librería, disponemos de varios objetos que nos ofrecerán a su vez varios modos de ejecutar:

  • Directamente a través del objeto Connection. Este es el método más sencillo y es adecuado para procedimientos que no devuelvan información, aunque si se le puede enviar información en la llamada al procedimiento.
  • A través de un objeto Command. Por este método sí podemos asociar parámetros al procedimiento que nos permiten tanto enviar como recibir informacion (input, output, input/output).

Veamos unos ejemplos:

A través del objeto Connetion:

 

  1. Dim cs As String
  2. cs = "Provider=SQLOLEDB.1;Password=1234;Persist Security Info=True;User ID=pepe;Initial Catalog=basededatos;Data Source=192.168.3.44"
  3. Dim objConn As New ADODB.Connection
  4. objConn.Open cs
  5. objConn.Execute "exec actualizar_empresa '" & Trim(Me.CIF_NIF.Value) & "','EUROFORCEM2009'"

 

A través del objeto command:

  1. Dim cs As String
  2.  
  3. cs = "Provider=<span>SQLOLEDB.1</span>;Password=1234;Persist Security Info=True;User ID=pepe;Initial Catalog=basededatos;Data Source=192.168.3.44"
  4.  
  5. Dim objConn As New ADODB.Connection
  6. objConn.Open cs
  7.  
  8. Dim objRs As New ADODB.Recordset
  9. Dim oc As New ADODB.Command
  10. Set oc.ActiveConnection = objConn
  11. oc.CommandText = "actualizar_empresa"
  12. oc.CommandType = adCmdStoredProc
  13.  
  14. Dim op As ADODB.Parameter
  15. Set op = oc.CreateParameter("CIF_EMPRESA", adVarChar, adParamInput, 9)
  16. oc.parameters.Append op
  17. op.Value = Trim(cif)
  18.  
  19. Dim op1 As ADODB.Parameter
  20. Set op1 = oc.CreateParameter("NOMBRE", adVarChar, adParamInput, 50)
  21. oc.parameters.Append op1
  22. op1.Value = "PEPE SANCHEZ"
  23.  
  24. oc.Execute

Por supuesto este código irá escrito en algún evento del formulario de Access desde el que deseemos lanzar el procedimiento.

Por último reseñar que debemos de tener referenciada la librería ADO que deseamos usar (Herramientas - referencias y selecciónar la versión de Microsoft Activex Data Objects...  que deseamos usar, con la 2.1 library funciona).

Estos ejemplos están probados para Access 2003 contra un procedimiento almacenado programado en SQL Server 2005.