Principales respuestas
Obtener el valor de un campo y compararlo

Pregunta
-
Buenas, estoy intentando comparar el valor que obtengo de mi base de datos con un string.
Esta es mi tabla:
Tengo la siguiente funcion para obtener el valor de estado:
Function validar_estado(ByVal usuario As String, ByVal clave As String) As String Dim resultado As String = "Error" Try cmd = New SqlCommand("SELECT * FROM tbl_usuario WHERE usuario='" & usuario & "'", conexion) dr = cmd.ExecuteReader If dr.Read Then resultado = dr.Item("estado") End If Catch ex As Exception MsgBox(ex.ToString) End Try Return resultado End Function
Y este el boton desde el cual llama la funcion:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click d.abrir() Dim usuario, clave As String usuario = txtusuario.Text clave = txtclave.Text If d.validar_estado(usuario, clave).Equals("Activo") Then MsgBox("Usuario activado") End If End Sub
Pero no sucede nada, el ultimo MsgBox no se muestra. Y no se cual es el error que estoy cometiendo. Gracias de antemano.
Respuestas
-
Hola Chris_Vidal,
Si solo quieres obtener el estado de un usuario deberías usar la función ExecuteScalar, además el parámetro 'clave' no lo veo necesario, ya que no lo utilizas en el método.
Algo como :
- Es importante parametrizar la consulta usando .Parameters(..) :
Function validar_estado(ByVal usuario As String) As String Using con As New SqlConnection("MiCadenaConexion") con.Open() Dim cmd As New SqlCommand("SELECT ISNULL(estado,'') FROM tbl_usuario WHERE usuario = @user", con) cmd.Parameters.AddWithValue("@user", usuario) Return CStr(cmd.ExecuteScalar()) End Using End Function
Y cuando se haga la consulta :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try 'Algunas operaciones ... Dim usuario As String = txtusuario.Text 'Obtienes el resultado Dim estado As String = d.validar_estado(usuario) If estado.Trim() = String.Empty Then MessageBox.Show("El usuario no existe.") Else 'Retornó un valor If estado.Equals("Activo") Then MessageBox.Show("Usuario activado") Else 'Es Inactivo MessageBox.Show("Usuario inactivo") End If End If Catch ex As Exception MessageBox.Show("Error : " & ex.Message) End Try End Sub
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI- Marcado como respuesta Chris_Vidal lunes, 2 de enero de 2017 0:10
Todas las respuestas
-
Hola Chris_Vidal,
Si solo quieres obtener el estado de un usuario deberías usar la función ExecuteScalar, además el parámetro 'clave' no lo veo necesario, ya que no lo utilizas en el método.
Algo como :
- Es importante parametrizar la consulta usando .Parameters(..) :
Function validar_estado(ByVal usuario As String) As String Using con As New SqlConnection("MiCadenaConexion") con.Open() Dim cmd As New SqlCommand("SELECT ISNULL(estado,'') FROM tbl_usuario WHERE usuario = @user", con) cmd.Parameters.AddWithValue("@user", usuario) Return CStr(cmd.ExecuteScalar()) End Using End Function
Y cuando se haga la consulta :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try 'Algunas operaciones ... Dim usuario As String = txtusuario.Text 'Obtienes el resultado Dim estado As String = d.validar_estado(usuario) If estado.Trim() = String.Empty Then MessageBox.Show("El usuario no existe.") Else 'Retornó un valor If estado.Equals("Activo") Then MessageBox.Show("Usuario activado") Else 'Es Inactivo MessageBox.Show("Usuario inactivo") End If End If Catch ex As Exception MessageBox.Show("Error : " & ex.Message) End Try End Sub
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI- Marcado como respuesta Chris_Vidal lunes, 2 de enero de 2017 0:10
-