none
Comparar Variable de texto con un campo de SQL SERVER RRS feed

  • Pregunta

  • Hola gente como estan ? espero esten muy bien 

    tengo una pregunta haber si me pueden ayudar tengo el siguiente codigo

     Dim dni As Integer = txtDni.Text
            Dim sql As String = "Select dni FROM Paciente Where dni='" & CInt(dni.ToString) & "' "

            If dni = sql Then
                MsgBox("Registrado")
            Else
                MsgBox("No registrado")
            End If
        End Sub

    quiero obtener el dato del campo dni de la tabla Paciente y comparar con mi variable

    que ponga en el el texto dni  y si existe que me salga el mensaje que existe y si no ps que no jejej por favor ayuden me


    William Daniel

    sábado, 23 de septiembre de 2017 10:02

Respuestas

  • Hola William Daniel Aragon

    Lo primero que debes tener en cuenta es que en la línea:

     Dim dni As Integer = txtDni.Text

    estás intentando declarar una variable tipo Integer a partir de un Textbox y sin convertirlo.

    Lo óptimo sería declarar como un String y de ahí realizar la comparación con lo que traiga desde tu base de datos. Por ejemplo:

     Dim dni As String = txtDni.Text
            Dim sql As String = "Select dni FROM Paciente Where dni= @dni"
    
            'realizas conexion a la base de datos:
            Dim conexion As New SqlConnection("Server=TuServer;Database=TuBase.....")
            Dim cmd As New SqlCommand(sql, conexion)
            cmd.CommandText = CommandType.Text
            'especificas el parámetro y lo pasas convertido
            cmd.Parameters.AddWithValue("@dni", CInt(dni))
            'recuperas el resultado de la consulta en una variable resultado
            Dim resultado As String = cmd.ExecuteScalar.ToString()
    
            'comparas si tu dni del textbox es igual al de la Base de datos
            If dni = resultado Then
                MsgBox("Registrado")
            Else
                MsgBox("No registrado")
            End If

    Por otro lado, a la medida que puedes trabaja con parámetros por ejemplo el @dni y luego lo conviertes en la línea de parameters al formato que tenga en tu bd (entiendo que es int en tu caso).

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    sábado, 23 de septiembre de 2017 14:47

Todas las respuestas

  • Hola William Daniel Aragon

    Lo primero que debes tener en cuenta es que en la línea:

     Dim dni As Integer = txtDni.Text

    estás intentando declarar una variable tipo Integer a partir de un Textbox y sin convertirlo.

    Lo óptimo sería declarar como un String y de ahí realizar la comparación con lo que traiga desde tu base de datos. Por ejemplo:

     Dim dni As String = txtDni.Text
            Dim sql As String = "Select dni FROM Paciente Where dni= @dni"
    
            'realizas conexion a la base de datos:
            Dim conexion As New SqlConnection("Server=TuServer;Database=TuBase.....")
            Dim cmd As New SqlCommand(sql, conexion)
            cmd.CommandText = CommandType.Text
            'especificas el parámetro y lo pasas convertido
            cmd.Parameters.AddWithValue("@dni", CInt(dni))
            'recuperas el resultado de la consulta en una variable resultado
            Dim resultado As String = cmd.ExecuteScalar.ToString()
    
            'comparas si tu dni del textbox es igual al de la Base de datos
            If dni = resultado Then
                MsgBox("Registrado")
            Else
                MsgBox("No registrado")
            End If

    Por otro lado, a la medida que puedes trabaja con parámetros por ejemplo el @dni y luego lo conviertes en la línea de parameters al formato que tenga en tu bd (entiendo que es int en tu caso).

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    sábado, 23 de septiembre de 2017 14:47
  • A ese codigo para verificacion puedes usar :

     
    Dim sql As String = "select dni from paciente where exists (select dni from paciente where dni=@dni)"

    El exist a comparacion del select no te recorre todos los registros

    Fuente

    No soy un vendido pero algo vendo
    Si soy divertido pero esto es serio
    Vivo riendo pero eso no quiere decir que nada me importa
    Ya pase las malas, me tocan las buenas, por eso empece a disfrutar ♪♫



    sábado, 23 de septiembre de 2017 15:04