Pregunta: | 18420 - COMO EJECUTAR Y RESCATAR CAMPOS DE UN STOREPROCEDURE EN VB6 |
Autor: | Christian Campillay |
hola mi nombre es Christian y tengo el siguiente problema, necesito ejecutar un procedimiento almacenado y luego captar el resultado del procedimiento, en el fondo los campos que este me entregue, si alguien puede ayudarme se lo agradeceria. |
Respuesta: | Mauricio Leyzaola |
A mi me funciona (con SQL Server 7) lo siguiente:
Private Function AsignaConsecutivoEntradaSalida(UnaEntrada As clsEntradaSalida) As Boolean Dim sSQL As String Dim Rs As New ADODB.Recordset sSQL = "SPConsecutivoEntradasSalidas " & UnaEntrada.TipoEntradaSalida & ", " & UnaEntrada.AlmacenId Rs.ActiveConnection = ADOQuery.ConnectionString Rs.Open sSQL EstaEntrada.Anio = Rs(0) EstaEntrada.NoDocumento = Rs(1) If Not EsValidoElNoDocumento(EstaEntrada) Then Call AsignaConsecutivoEntradaSalida(EstaEntrada) Set Rs = Nothing End Function Creo que el truco está en hacer un select por cada valor que desees que el stored procedure te devuelva. He intentado con parámetros de tipo Output y tambien con el engorroso método Parameters de ADO, pero ambos sin éxito. Este es el stored procedure que llamo desde el código de arriba: /* Entradas = 0; Salidas =1 */ CREATE PROCEDURE SPConsecutivoEntradasSalidas @EsEntrada TINYINT, @AlmacenId SMALLINT AS DECLARE @AnioActual SMALLINT, @UltimoAnio SMALLINT, @UltimoDocumento INT /* Obtener el año actual */ SELECT @AnioActual = DATEPART (yyyy,GETDATE()) /* Obtener el ultimo año de la EntradaSalida */ SELECT @UltimoAnio = ISNULL (MAX(Anio),0) FROM EntradaSalida WHERE EsEntrada = @EsEntrada AND Almacen_Id = @AlmacenId IF @UltimoAnio < @AnioActual BEGIN SELECT @UltimoAnio = @AnioActual SELECT @UltimoDocumento = 0 END ELSE BEGIN SELECT @UltimoDocumento = ISNULL (MAX(NoDocumento),0) FROM EntradaSalida WHERE EsEntrada = @EsEntrada AND Almacen_Id = @AlmacenId END SELECT @UltimoDocumento = @UltimoDocumento + 1 SELECT @UltimoAnio, @UltimoDocumento GO Espero que sirva. Suerte. |