Hola, Daniel:
La función de VB 2005 que utilizas para determinar si existe o no un usuario dado tiene el pequeño error de no establecer la dirección del parámetro paramResultado como parámetro de salida. Más bien, lo que haces es pasarle a ese parámetro el valor de la variable Resultado de tipo String que inicializas en “” (cadena vacía) al iniciar dicha función. Como en ningún momento cambias el valor de la variable Resultado, tu paramResultado también tiene el valor de cadena vacía, por lo cual no es extraño que al inspeccionar el valor de ese parámetro en tu último bloque If, te muestre ese valor “”.
He aquí la función corregida:
Public Function ExisteUsuario(ByVal login As String) As Boolean
Dim ConexionADO As SqlConnection = _
New SqlConnection("Data Source=(local); Initial Catalog=BASEDATOS; user id=sa; password=")
ConexionADO.Open()
Dim ComandoADO As SqlCommand = _
New SqlCommand("usp_ExisteUsuario", ConexionADO)
ComandoADO.CommandType = CommandType.StoredProcedure
Dim paramLogin As SqlParameter = _
New SqlParameter("@Login", SqlDbType.VarChar, 20)
paramLogin.Value = login
ComandoADO.Parameters.Add(paramLogin)
Dim paramResultado As SqlParameter = _
New SqlParameter("@Resultado", SqlDbType.Char, 1)
paramResultado.Direction = ParameterDirection.Output
ComandoADO.Parameters.Add(paramResultado)
ComandoADO.ExecuteReader()
ConexionADO.Close()
If paramResultado.Value = "S" Then
Return True
Else
Return False
End If End Function
Por cuestión de orientación a objetos cambié el uso de tu variable _login de ámbito de clase por un parámetro en la función, pero funciona de la misma manera. Lo he puesto sólo como una sugerencia, pero si deseas utilizar tu variable _login, simplemente elimina el parámetro de la declaración de la función y cambia la línea
paramLogin.Value = login
por
paramLogin.Value = _login
Saludos 
Я!©ђ!Є ©Я∆ZΨ |