Foros del Web » Programación para mayores de 30 ;) » .NET »

manejar parametros de salida asp sql

Estas en el tema de manejar parametros de salida asp sql en el foro de .NET en Foros del Web. entorno asp.net 2 + visual studio 2005 programando web form application modo VISUAl basic base de datos sql server 2000 todo en forma local, quiero ...
  #1 (permalink)  
Antiguo 11/05/2007, 13:32
 
Fecha de Ingreso: julio-2006
Mensajes: 3
Antigüedad: 17 años, 9 meses
Puntos: 0
manejar parametros de salida asp sql

entorno
asp.net 2 + visual studio 2005 programando web form application modo VISUAl basic base de datos sql server 2000

todo en forma local, quiero decir no es necesaria la seguridad extra

bien creo un stored procedure en sql como se muestra a continuacion

Código:
CREATE procedure login
@user char(10),@clave char(10)
As
if exists(select * from Usuarios where Usuario=@user and Clave=@clave)
    return            
else
	RETURN 'error'
GO
bueno en los return les tenia puesto que me devolvieran 1 o 0 segun sea el caso, pero ahora quiero que me devuelvan el nombre_del_usuario, que es diferente al usuario

mi tabla luciria de la siguiente forma

Código:
usuario   contraseña        nombre 
pepito      p3pi          sr. pepe
Para llamar al storedP y ejecutar accion segun convenga es de la siguiente forma
Código:
Public Class login
    ....

#Region " Código generado por el Diseñador de Web Forms "

   ...

    End Sub
    Protected WithEvents lblm As System.Web.UI.WebControls.Label
    Protected WithEvents RequiredFieldValidator2 As System.Web.UI.WebControls.RequiredFieldValidator
    Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox
    Protected WithEvents Label2 As System.Web.UI.WebControls.Label
    Protected WithEvents RequiredFieldValidator1 As System.Web.UI.WebControls.RequiredFieldValidator
    Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
    Protected WithEvents Label1 As System.Web.UI.WebControls.Label
    Protected WithEvents cmdAceptar As System.Web.UI.WebControls.Button

...
#End Region


    'Procedimiento para loguearse

    Private Sub cmdAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAceptar.Click

        cmd = New SqlCommand("login", con)
        cmd.CommandType = CommandType.StoredProcedure

        Dim prmDato As SqlParameter
        Dim Resultado As String


        prmDato = cmd.Parameters.Add("RETURN_VALUE", SqlDbType.Char)
        prmDato.Direction = ParameterDirection.ReturnValue

        cmd.Parameters.Add("@user", TextBox1.Text)
        cmd.Parameters.Add("@clave", TextBox2.Text)
        'Abrir la conexion
        con.Open()

        cmd.ExecuteNonQuery()
        'Recoger el resultado
        Resultado = cmd.Parameters("RETURN_VALUE").Value.ToString
        'Cerrar la conexion
        con.Close()

este usaba antes  con condiciones de 1 o 0
        'If Resultado = 1 Then
 
        'FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, False)
        'Response.Redirect("defoult.aspx")
        'Else
        'lblm.Text = Resultado
        'End If

    End Sub
lo que e hecho.

para empezar cambiar la seleccion a un campo en especifico
quedaria asi
if exists(select nombre from Usuarios where Usuario=@user and Clave=@clave
esto me devolveria sr.pepe

pero la pagina me devuelve el error de que no puede convertir int a vchar le he movido y me muestra 0 cuando intento loggearme

hmm como veran no soy muy experto y tal ves la solucion sea muy simple.
pues ese codigo es que tomo apuntes en clase y leo en internet.
gracias y saludos desde mexico
  #2 (permalink)  
Antiguo 11/05/2007, 14:46
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: manejar parametros de salida asp sql

La razon es porque en el return value solo puedes regresar un dato de tipo entero. Se utiliza para saber si un proceso se ejecutó correctamente o no.
0 = Ejecutado correctamente
Si es Diferente de cero ocurrio un error, y se envia su código.

Si quieres regresar el nombre debes agregar una variable de salida y atraparla en tus parametros de ASP.
p.e.
Código:
CREATE procedure dbo.login(
          @user    char(10)
         ,@clave   char(10)
         ,@nombre  varchar(50) output)
As

Set @nombre = ''

If (select count(*) from Usuarios(nolock)  where Usuario=@user and Clave=@clave)
Begin
     Select @nombre = isnull(nombre,'') 
     from usuario (nolock)  
     Where Usuario=@user and Clave=@clave
     return 0
End
Else
Begin
   Return 1
End
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:55.