SoloCodigo
CLR: .Net / Mono / Boo / Otros CLR => VB .NET => Mensaje iniciado por: Vate en Viernes 19 de Enero de 2007, 09:46
-
Hola, estoy desarrollando un programa en VB .net 2005 y tengo un Stored procedure en SQL que tiene varias entradas y una sola salida(ouput).Estoy haciendo una funcion en VB net que me arroje el valor de ese parametro de salida del SP que es un entero:
El problema es que no se como hacer que ese parametro de salida del SP sea tambien la salida de la funcion en VBnet, en otras palabras, se como añadir parametros de entrada al SP (Parameters.Add)pero no se como declarar las salidas.
Muestro mi funcion
Public Function RegistraLlamadaCaso(ByVal vNomCliente As String, ByVal vFechaLlamada As String, ByVal vFechaHoraInicioCaso As String, ByVal vNomClaseEquipo As String, ByVal vNomTipoEquipo As String) As Integer
Try
Dim Cnx As New SqlConnection(cadena)
Dim Cmd As New SqlCommand("usp_RegistraCasoLlamada", Cnx)
With Cmd
.CommandType = CommandType.StoredProcedure
.Parameters.Add(New SqlParameter("@NomCliente", SqlDbType.VarChar, 50)).Value = vNomCliente
.Parameters.Add(New SqlParameter("@FechaLlamada", SqlDbType.VarChar, 25)).Value = vFechaLlamada
.Parameters.Add(New SqlParameter("@FechaHoraInicioCaso", SqlDbType.VarChar, 25)).Value = vFechaHoraInicioCaso
.Parameters.Add(New SqlParameter("@NomClaseEquipo", SqlDbType.VarChar, 20)).Value = vNomClaseEquipo
.Parameters.Add(New SqlParameter("@NomTipoEquipo", SqlDbType.VarChar, 20)).Value = vNomTipoEquipo
End With
Cnx.Open()
Cmd.ExecuteNonQuery()
Cnx.Close()
Catch ex As SqlException
Throw ex
End Try
End Function
Gracias de antemano
Vate
-
hola amigos, intente hacer el siguiente cambio pero aun no sale, siempre tiene como salida el valor cero :lightsabre:
param.ParameterName = "@IdCaso"
param.SqlDbType = SqlDbType.Int
param.Direction = ParameterDirection.Output
.Parameters.Add(param)
val = Cmd.Parameters("@IdCaso").Value
luego al final de la funcion , para asignar el valor de salida a la funcion
return(value)
El programa compila, pero siempre el resultado de la funcion me da cero :(, porfavor si alguien sabe alg al respecto hagamelo saber
Gracias
Walter
-
Te aseguraste de primero ejecutar el query:
Cnx.Open()
Cmd.ExecuteNonQuery()
antes de leer el resultado de la variable de retorno?
val = Cmd.Parameters("@IdCaso").Value
Cnx.Close()
-
Gracias amigo craliaga, eso era, lo posteo para cualquiera que haya tenido el mismo dilema que yo
Public Function RegistraLlamadaCaso(ByVal vNomCliente As String, ByVal vFechaLlamada As String, ByVal vFechaHoraInicioCaso As String, ByVal vNomClaseEquipo As String, ByVal vNomTipoEquipo As String) As Integer
Try
Dim Cnx As New SqlConnection(cadena)
Dim Cmd As New SqlCommand("usp_RegistraCasoLlamada", Cnx)
Dim param As New SqlParameter
Dim val As Integer
With Cmd
.CommandType = CommandType.StoredProcedure
.Parameters.Add(New SqlParameter("@NomCliente", SqlDbType.VarChar, 50)).Value = vNomCliente
.Parameters.Add(New SqlParameter("@FechaLlamada", SqlDbType.VarChar, 25)).Value = vFechaLlamada
.Parameters.Add(New SqlParameter("@FechaHoraInicioCaso", SqlDbType.VarChar, 25)).Value = vFechaHoraInicioCaso
.Parameters.Add(New SqlParameter("@NomClaseEquipo", SqlDbType.VarChar, 20)).Value = vNomClaseEquipo
.Parameters.Add(New SqlParameter("@NomTipoEquipo", SqlDbType.VarChar, 20)).Value = vNomTipoEquipo
'.Parameters.Add(New SqlParameter("@IdCaso", SqlDbType.Int).Direction = ParameterDirection.Output)
param.ParameterName = "@IdCaso"
param.SqlDbType = SqlDbType.Int
param.Direction = ParameterDirection.Output
.Parameters.Add(param)
End With
Cnx.Open()
Cmd.ExecuteNonQuery()
val = Cmd.Parameters("@IdCaso").Value
Return (val)
Cnx.Close()
Catch ex As SqlException
Throw ex
End Try
End Function