none
consultar existencia de registro usando asp net con vb RRS feed

  • Pregunta

  • Buenas tardes.

    Estoy tratando de crear una aplicacion que peuda ingresar datos desde un web form, la informacion puede ingresar sin ningun problema, el problema que tengo es que estoy tratando de validar que antes de ingresar cualqueir registro se verifique en la base de datos que dicho registro existe o no. si existe se suspende la funcion sino se inserta.

    para verificar mando los datos de 2 cajas de texto en particular por medio de una consulta. luego igualo uno variable cualquiera tipo integera al execute nonquery de esa consulta. Pero aunque el registro no exista, me dice que el registro si existe.

    Private Function pConsultarExistencia(ByVal sprefijo As String, ByVal icorrelativo As Integer)
            Dim ValorVerify As Double
            Try
                squery = "select * from maestros_medios_prefijo_presupuestos where prefijo='" & sprefijo & "' and correlativo=" & icorrelativo & ""
                Dim con As New SqlConnection(strconexionOmniM)
                Dim sql As New SqlCommand(squery, con)
                con.Open()


                ValorVerify = sql.ExecuteNonQuery
                If ValorVerify = -1 Then
                    Return True
                Else
                    Return False
                End If
            Catch ex As Exception
                Throw New Exception(ex.Message)

            End Try
        End Function

        Public Overridable Function ConsultarExistencia(ByVal sprefijo As String, ByVal icorrelativo As Integer)
            Dim bresp As Boolean
            Try
                bresp = Me.pConsultarExistencia(sprefijo, icorrelativo)
                Return bresp
            Catch ex As Exception
                Throw New Exception(ex.Message)
            End Try

        End Function

    luego:

    Try
                If ConsultarExistencia(UCase(Me.txtPrefijo.Text), Integer.Parse(Me.txtCorrelativo.Text)) = True Then
                    MsgBox("Este registro ya existe")
                    Exit Sub
                Else

    existira alguna forma de realizar esta verifcacion de otra forma.

    Muchas gracias por la ayuda o correccion.
    lunes, 31 de agosto de 2009 22:27

Respuestas

  • Primero que todo, como buena practica de programación, no concatenes valores en una sentencia sql , utiliza parametros(evita el sqlinjection) y si puedes, utiliza procedimientos almacenados, son mas rapidos y seguros, si no lo haces al menos utiliza los parametros y no pidas todas las columnas tambien es una mala practica, para este caso necesitas un sola. utiliza ExecuteScalar() no ExecuteNonQuery 

    squery = "select tucolumna from maestros_medios_prefijo_presupuestos where prefijo=@sprefijo and correlativo=@icorrelativo"

    Dim con As New SqlConnection(strconexionOmniM)
    Dim sql As New SqlCommand(squery, con)

    sql.Parameters.AddWithValue("@sprefijo", sprefijo)

    sql.Parameters.AddWithValue("@icorrelativo", icorrelativo)

    con.Open()

    Dim Resultado = sql.ExecuteScalar()

    conexion.Close()

            If Resultado = Nothing Then

                Return True

            Else

                Return False

            End If

    Recuerda en catch tambien cerrar la conexion

    • Propuesto como respuesta Jhonattan__ viernes, 19 de noviembre de 2010 2:39
    • Marcado como respuesta Ismael Borche martes, 24 de mayo de 2011 21:50
    viernes, 19 de noviembre de 2010 2:39