Usuario
como evitar guardar registros duplicados

Pregunta
-
tengo una tabla con los campos nombre y apellido, y dni, pero quiero que el boton save del bindingnavigator, verifique en la base si el dni ingresado en el texbox ya existe, y muestre el mensaje de "ya existe dni", y si no existe que lo guarde
- Cambiado Enrique M. Montejo domingo, 19 de febrero de 2012 10:07 acceso a datos (De:Lenguaje VB.NET)
Todas las respuestas
-
hola
imagino podrias suar el eventos
para definir alli la validacion, digo no podrias hacerlo en un boton simple, porque la validacion que quieres lograr es facil
[ADO.NET] – Parte 5 - Ejemplos Simples – Operaciones CRUD
como se muestra en el ejemplo en el metodo Exists() alli se valida si ese dato esta presente en algun registro anterior
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Eduardo PorteschellerModerator jueves, 16 de febrero de 2012 10:17
-
-
Hola,
A ver si puede entender la siguiente explicación
1-Agregate la siguiente funcion para validar que el registro ya existe
Function Existe(ByVal id As Integer, con As String) As DataTable Dim cn As New SqlConnection(con) Dim cmd As New SqlCommand("sp_exite", cn) Dim da As New SqlDataAdapter(cmd) Dim dt As New DataTable cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.AddWithValue("@id ", id) Try da.Fill(dt) Catch ex As Exception End Try Return dt End Function
2-El procedimiento se declara de la siguiente manera
CREATE PROCEDURE sp_existe @ID INT AS SELECT COUNT(*) FROM dbo.hd_Cliente WHERE CLIENTE_ID =@ID
3-Agregate la siguiente metodo para agregar el cliente
Public Function add_clientes(ByVal sConexString As String) As Integer Dim ocmd As New SqlCommand Dim oTrans As SqlTransaction = Nothing Dim lResult As Integer Dim Sb As New StringBuilder Dim oConex As New SqlConnection Try oConex.ConnectionString = sConexString oConex.Open() oTrans = oConex.BeginTransaction(IsolationLevel.ReadCommitted) ocmd.Connection = oConex ocmd.CommandType = CommandType.StoredProcedure ocmd.Transaction = oTrans ocmd.Parameters.AddWithValue("@Nombre ", valor1) ocmd.Parameters.AddWithValue("@Apellido ", valor2) ocmd.Parameters.AddWithValue("@direccion ", valor3) ocmd.Parameters.AddWithValue("@telefono ", valor4) ocmd.CommandText = "add_clientes" lResult = CType(ocmd.ExecuteNonQuery(), Integer) Sb.Length = 0 If lResult > 0 Then oTrans.Commit() Return True Else oTrans.Rollback() Return False End If Catch oExcep As Exception Try oTrans.Rollback() Catch ex As Exception Throw New Exception(ex.Message) End Try Throw New Exception(oExcep.Message) Finally ocmd.Dispose() If oConex.State = ConnectionState.Open Then oConex.Close() End Try End Function
4-Agrege el siguiente codigo el evento del boton agregar
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click Dim dt As New DataTable Dim result As Integer dt = Existe(15, "conexion") 'Valido si existe el registro ante de insertarlo a la base de datos If dt.Rows.Count > 0 Then ' si el registro retorna un valor mayor que "0" es por que el registro ya existe Exit Sub ' saldo del procedimiento Else 'Inserto los registro result = add_clientes("conextion") If result = 0 Then 'a ocurrido un errror Else 'Los registro fueron registrado correctante End If ' End If End If End Sub
espero que ahora si pueda entener el como se valida para que no registre datos duplicado.
suerte
Santo Domingo