30/09/2014, 08:11
|
| | Fecha de Ingreso: abril-2012
Mensajes: 449
Antigüedad: 12 años, 7 meses Puntos: 7 | |
Respuesta: pasar parametros a stored procedure mediante vba excel y recoger valor Cita:
Iniciado por maialenlopez Hola,
Le estoy dando mil vueltas a esto y no consigo pasarle parámetros a un stored procedure que tengo en base de datos y tampoco consigo recoger el valor que me devuelve.
este es el stored:
Código sql:
Ver originalALTER PROCEDURE [dbo].[HORAS_PROGRAMACION] @IDTARE AS INTEGER AS SELECT 'Hrs' = SUM(HOR_PACT) FROM FSGA_PACT WITH(NOLOCK) INNER JOIN ( SELECT FSGA_TRUS.ID_EMPR , FSGA_TRUS.ID_CLNT, FSGA_TRUS.ID_PROY, FSGA_TRUS.ID_TARE, FSGA_TRUS.ID_USUA FROM FSGA_TRUS WITH(NOLOCK) INNER JOIN FSGA_CATU WITH(NOLOCK) ON FSGA_TRUS.ID_EMPR = FSGA_CATU.ID_EMPR AND FSGA_TRUS.ID_AREA = FSGA_CATU.ID_AREA AND FSGA_TRUS.ID_CATU = FSGA_CATU.ID_CATU WHERE COD_CATU IN ('TCINS','TCINJ','TCBIS','TCBIJ','PSDES','PJDES') ) P ON FSGA_PACT.ID_EMPR = P.ID_EMPR AND FSGA_PACT.ID_CLNT = P.ID_CLNT AND FSGA_PACT.ID_PROY = P.ID_PROY AND FSGA_PACT.ID_TARE = P.ID_TARE WHERE ID_AREA IN (2,5,6,7,8,9,102) AND ( FSGA_PACT.ID_USUA NOT IN ( SELECT ID_USUA FROM FSGA_USCT WITH(NOLOCK) INNER JOIN FSGA_CATU WITH(NOLOCK) ON FSGA_USCT.ID_EMPR = FSGA_CATU.ID_EMPR AND FSGA_USCT.ID_AREA = FSGA_CATU.ID_AREA AND FSGA_USCT.ID_CATU = FSGA_CATU.ID_CATU WHERE COD_CATU IN ('GEDES','RSBIS','RSPRD','SUINT','GEDES','RSBIS','GEDES','SUPRG') AND FFIN_USCT IS NULL) OR FSGA_PACT.ID_USUA = P.ID_USUA ) AND NOT (fsga_pact.id_tptr = 17 AND fsga_pact.id_area = 2) AND NOT (fsga_pact.id_tptr = 16 AND fsga_pact.id_area = 5) AND NOT (fsga_pact.id_tptr = 8 AND fsga_pact.id_area = 102) AND NOT (fsga_pact.id_tptr = 1 AND fsga_pact.id_area = 107) AND FSGA_PACT.ID_TARE = @IDTARE
Y esto es lo que hago desde una macro de excel pero no consigo paserle ni el parámetro ni recoger el valor:
Código vba:
Ver originalSet cmd = New ADODB.Command
cmd.CommandText = "HORAS_PROGRAMACION"
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = adoconn
Set prm = cmd.CreateParameter("@IDTARE", adInteger, adParamInput)
cmd.Parameters.Append prm
cmd.Parameters(1).Value = idTare
'Execute the Stored Procedure
Set Rst = cmd.Execute
If Not Rst.EOF Then
' Update Real Hours
sheetx.Range("V" & ActiveCell.Row).Value = Rst
txtProg.Value = Rst
'MsgBox "Horas imputadas a la tarea: " & adores(0).Value, vbInformation
Else
sheetx.Range("V" & ActiveCell.Row).Value = 0
txtProg.Value = 0
MsgBox "¡No existen horas imputadas a la tarea!", vbExclamation
End If
alguien puede ayudarme? me estoy volviendo loca!!! YA lo he solucionado haciendo lo siguiente:
Código vba:
Ver originalSet cmd = New ADODB.Command
cmd.CommandText = "F_TARE_horprogRem"
cmd.CommandType = adCmdStoredProc
cmd.ActiveConnection = adoconn
Set prm = cmd.CreateParameter("@IDTARE", adInteger, adParamInput)
cmd.Parameters.Append prm
cmd.Parameters(0).Value = idTare
Set prmOut = cmd.CreateParameter("@CANTIDAD", adSmallInt, adParamOutput)
cmd.Parameters.Append prmOut
'Execute the Stored Procedure
Set adores = cmd.Execute
'Dim numero_columnas As Integer
'numero_columnas = adores.Fields.Count
Dim valor As Integer
valor = cmd.Parameters("@CANTIDAD").Value
__________________ Gracias por todo;
Un saludo |