none
¿Como evitar duplicidad en un registro? RRS feed

  • Pregunta

  • Hola, tengo un datagridV que se llena con datos de SQLserver tiene un campo llave que es el ID y dicho campo se genera automaticamente me gustaria que el campo "Nombre" de la base de datos no permita otro identico, y que cuando intente agregar un registro en el vb diga Msgbox("El registor ya existe"). :(
    jueves, 23 de junio de 2016 18:36

Todas las respuestas

  • Renzo19,

    Antes de hacer la inserción debes validar la existencia del valor en la tabla, para ello puedes hacer una consulta simple:

    Dim ConsultaSQL As String = "SELECT COUNT(*) FROM MiTabla WHERE (Nombre = @Nombre)"
    
    Dim cmd As New SqlCommand(ConsultaSQL, cn)
    
    cmd.Parameters.AddWithValue("@Nombre", txtNombre.Text)
    
    cn.Open()
    
    Dim Existe As Boolean = Convert.ToInt32(cmd.ExecuteScalar()) > 0
    
    If Existe Then
    	MessageBox("El valor ya existe")
    End If
    

    EDITO: además de validar la existencia del campo es recomendable que refuerces la unicidad en base de datos, para eso te sugiero implementes un indice único para la columna.



    jueves, 23 de junio de 2016 18:41
  • Si quieres garantizar a nivel de base de datos que no haya duplicidades, créale un índice único a ese campo:

    CREATE UNIQUE INDEX idxNombre ON laTabla(Nombre)

    Eso impedirá que se produzcan duplicidades, tanto al insertar datos como en caso de modificarlos. Si lo intentas, te llegará un SqlException a tu código cliente, que podrás interceptar en un try...catch para mostrar el mensaje deseado.

    jueves, 23 de junio de 2016 18:47
  • hola

    podrias definir en la db ese campo como UNIQUE para que en caso de duplicado no permita ingresarlo

    Create Unique Constraints

    How can I force a column to be unique for an entire table in SQL Server 2008 R2?

    de esta forma si el campos ingresa duplicados fallara

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 23 de junio de 2016 18:48