Ejecutar Procedimientos Almacenados de SQL Server desde Microsoft Access

Imagen genérica del Canal Informática y TICS

20/02/2013

Ingeniero Técnico en Informática por la Universidad de Granada. C.A.P. por la Universidad de Granada. Formador de Formadores y Formador de Formadores Especialidad Tele formación. Microsoft Certified Solution Developer en Visual Studio .NET. Certificado en CISCO, Oracle y Linux. Profesor en el departamento de Nuevas tecnologías de INESEM.

0

14 Comentarios

  1. César dice:

    Hola Juan,Muchas gracias por el post pero me surje una duda que quizas tu me la sabras resolver.En este código lo que hago es pasarle dos fechas para luego desde el procedimiento almacenado hacer un select con un where fecha between estas dos fechas pero nose como obtenerlas desde sql server.En access hago esto: objConn.Open cs    Dim objRs As New ADODB.Recordset    Dim oc As New ADODB.Command    Set oc.ActiveConnection = objConn        oc.CommandText = “prueba”    oc.CommandType = adCmdStoredProc        Dim op As ADODB.Parameter    Set op = oc.CreateParameter(“@sDesde”, adDate, adParamInput, 8)    oc.Parameters.Append op    op.Value = Trim(Me.Desde)    Debug.Print op.Value    Dim op1 As ADODB.Parameter    Set op1 = oc.CreateParameter(“@sHasta”, adDate, adParamInput, 8)    oc.Parameters.Append op1    op1.Value = Trim(Me.Hasta)        oc.ExecuteMe gustaría saber como recuperar esa fecha desde y hasta en sql server y dentro de mi proc.almacenado que tengo declarado asi:ALTER PROCEDURE[dbo].[dbo.prueba] (    @sDesde nvarchar(8),@sHasta nvarchar(8))Muchas gracias y gracias otra vez por esta entrada.

    0

  2. Carlos Andrés dice:

    Buenas tardes amigo,

    Le deseo preguntar como hago la conexión desde Access cs = “Provider=SQLOLEDB.1;Password=1234;Persist Security Info=True;User ID=pepe;Initial Catalog=basededatos;Data Source=192.168.3.44”
    Dim objConn As New ADODB.Connection ya que tengo duda sobre esta parte que copio. Me podría indicar que significa cada parte ya que no lo he encontrado en la web.
    Gracias por la ayuda

    0

  3. Carlos Andrés dice:

    Buenas tardes amigo,

    De antemano le agradezco por su respuesta que me ha sido muy útil =), pero a la vez me surge una nueva duda y que se estoy muy cerca de lograr sacar mi proyecto y es la siguiente:
    objConn.Execute “exec monitoreo_trx ‘” + Trim(Me.CIF_NIF.Value) + “‘,’monitoreo_trx'”
    Que significa Trim(Me.CIF_NIF.Value) que me arroja error cuando ejecuto el código desde Access, a que nos referimos con el Trim y el código que esta en paréntesis.

    Nuevamente gracias por la atención y quedo atento a sus comentarios.

    0

    • INESEM Administrador dice:

      La función Trim, lo que hace es quitar todos los espacios en blanco que tenga el argumento al principio y al final. Ejemplo Trim (” hola amigo “), devuelve la cadena “hola amigo”.

      Por qué razón imagino que le dá un error a usted, pues porque CIF_NIF.Value contenga el valor NULL. Un modo de evitar el error es solo aplicar la función Trim si el argumento es distinto de NULL. Ej.:

      If IsNull(CIF_NIF.Value) = true then

      En base a esa respuesta actuar.

      Espero que le sirva.

      Un saludo.

      0

  4. Leonardo Valdez dice:

    Antes que nada te felicito por tu excelente trabajo. Evolucionado en esto de las bases de datos he creado un proyecto ADP. Hasta aquí todo bien pero me doy cuenta que no puedo usar casi nada de lo conocido en Access y que hay que familiarizarse con T-SQL.

    No he podido filtrar un cuadro combinado en base a un cuadro de texto en un formulario. Algo tan sencillo en Access. El origen de la fila del ComboBox es un procedimiento almacenado el cual tiene un parámetro que es el que debería filtrarlo.

    CREATE PROCEDURE sp_storedprocedure
    @myinput int
    AS
    SELECT columna1, columna2 FROM Tabla1
    WHERE columna1 = @myInput
    GO

    @myinput es igual a Me.Texto1.Value

    ¿Cómo puedo pasarle el valor del parámetro al Procedimiento? Cuando pulso sobre el cuadro combinado siempre me abre un cuadro de diálogo pidiéndome el parámetro. Te agradezco de antemano.

    0

    • Juan Iruela Juan Iruela dice:

      Estimado lector.

      En respuesta a su consulta le comento que en los dos ejemplos que acompaño en el post, puede usted ver como enviar parámetros a un procedimiento almacenado.

      Creo que el problema por lo que me comenta es que los que usted está intentando enviar está vacío con lo que access le pide el valor antes de hacer la llamada (como cuando en una consulta no pode el valor de filtro).

      Yo le aconsejo que ejecute paso a paso el código de Access y se asegure de que está usando bien las propiedades del combo para seleccionar el valor deseado y por tanto se está enviando bien ese valor a la llamado.

      No encuentro otra razón por la que no funcione ese código.

      0

  5. Guillermo Velasco dice:

    Buenos días quiero hacerle la siguiente pregunta. Pues llevo varios días investigando por internet y no lo encuentro y lo más aproximado lo explica usted.
    Tengo un procedimiento almacenado en un servidor sql, por ejemplo “BuscarDni”, que tiene un parametro de entrada que es el DNI a buscar, y este procedimiento almacenado nos puede devolver un registro, o muchos registros o nada y esto meterlo en un recordset
    ¿Esto se puede hacer en Access.?

    Un saludo y muchas gracias.

    0

    • Juan Iruela Juan Iruela dice:

      Ciertamente nunca he probado lo que usted dice. En .NET si lo he hecho, pero claro las estructuras de .NET son más actuales (Dataset) que los antiguos recordset.

      Como idea por si no lo consigue, siempre puede hacer un procedimiento que cree una tabla temporal con los datos deseados de modo que esa tabla una vez usada desde su aplicación sea eliminada.

      Un saludo.

      0

  6. brandon diaz dice:

    buenas tardes muy interasante su post pero tengo un problema al ejecutar el  Private Sub Comando0_Click()Dim cs As String    cs = “Provider=SQLOLEDB.1;Password=Bf0ment0;Persist Security Info=True;User ID=sa;Initial Catalog=BASE_RIESGOS;Data Source=srvsqlserver”    Dim objConn As New ADODB.Connection      objConn.Open cs        objConn.Execute “exec patrimonio ” + “8” + “,” + “2014”  ////** el 8  y 2014 son parametros que tiene mi  store procedure que son numero de mes y y añoEnd Subel problema es que me tira un mensaje de “EXPIRO TIEMPO DE ESPERA DE LA CONSULTA ”  me podria ayudar con este problema ya que  e buscado y no e podido solucionarloesperare muy agradecido su  respuesta

    0

    • Juan Iruela Juan Iruela dice:

      Estimado Brando, casi con toda seguridad su procedimento está fallando y no llega a finalizar y claro pasado un tiempo el sistema devuelve el error que usted comenta.

      Revise su procedimiento.

      0

  7. Ariel Furmanski dice:

    Buenas tardes .podrán decirme si puedo enlazar un procedimiento almacenado en SQL que devuelve registros a un recordset de un formulario de Access ?He logrado con una tabla una consulta. Pero no con un SPGracias! !!

    0

    • Juan Iruela Juan Iruela dice:

      Ese tema no lo he trabajado, imagino que sí, pero ahora mismo no sabría decirle al 100%. De todos modos la opción de crear una tabla temporal que pueda usar y posteriormente eliminarla no es mala opción.

      Un saludo.

      0

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

python y R análisis de datos

Python vs R para el análisis de datos

En la actualidad, disponemos de multitud de herramientas para el análisis de datos. Dos de las más novedosas son Python u R. Descubre cual te conviene.

CSS y etqiuetas style

¿Qué son los estilos CSS y cómo afectan a mi web?

En este artículos desmontamos los archivos CSS, explicando su utilidad y sus ventajas para optimizar cualquier diseño web en la actualidad.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies