Foros del Web » Programación para mayores de 30 ;) » .NET »

Validar datos repetidos

Estas en el tema de Validar datos repetidos en el foro de .NET en Foros del Web. hola amigos quiero que me corrijan y por favor me digan cual es mi error. En mi programa estoy haciendo una validación que no permita ...
  #1 (permalink)  
Antiguo 14/07/2014, 14:19
 
Fecha de Ingreso: agosto-2010
Mensajes: 126
Antigüedad: 13 años, 8 meses
Puntos: 9
Validar datos repetidos

hola amigos quiero que me corrijan y por favor me digan cual es mi error.
En mi programa estoy haciendo una validación que no permita ingresar un DNI ya registrado en mi base de datos.

Procedimiento almacenado SQL es el siguiente

Código PHP:
create procedure InsertarPersona
@Nombres varchar(50),
@
Apellidos varchar(50),
@
Dni int,
@
Direccion varchar(100),
@
Telefono int,
@
Email varchar(100),
@
Estado varchar(30)
as 
begin 
        
if (select Count(*) from tztPersona where Dni = @Dni) = 0
              insert into tztPersona values 
(@Nombres, @Apellidos, @Dni, @Direccion, @Telefono, @Email, @Estado)
       else 
                
select 'Error, DNI Repetido..'
end 
go 
Este es mi método para registrar una Persona

Código PHP:
 Public Function InsertarPersona(ByVal a As nPersona) As Boolean
        
Try
            
Conectado()
            
cmd = New SqlCommand("InsertarPersona")
            
cmd.CommandType CommandType.StoredProcedure
            cmd
.Connection cnn

            cmd
.Parameters.AddWithValue("@Nombres"a.getNombres)
            
cmd.Parameters.AddWithValue("@Apellidos"a.getApellidos)
            
cmd.Parameters.AddWithValue("@Dni"a.getDni)
            
cmd.Parameters.AddWithValue("@Direccion"a.getDireccion)
            
cmd.Parameters.AddWithValue("@Telefono"a.getTelefono)
            
cmd.Parameters.AddWithValue("@Email"a.getEmail)
            
cmd.Parameters.AddWithValue("@Estado"a.getEstado)

            If 
cmd.ExecuteNonQuery Then
                
Return True
            
Else
                Return 
False
            End 
If
        Catch 
ex As Exception
            MsgBox
(ex.Message)
            Return 
False
        Finally
            Desconectado
()
        
End Try
    
End Function 

Código PHP:
If Me.ValidateChildren True And txtNombres.Text <> "" And txtApellidos.Text <> "" And txtCi.Text <> "" And txtDireccion.Text <> "" And txtTelefono.Text <> "" And txtEmail.Text <> "" Then
            
Try
                
Dim na As New nPersona
                Dim da 
As New dPersona

                na
.getNombres txtNombres.Text
                na
.getApellidos txtApellidos.Text
                na
.getDni txtDni.Text
                na
.getDireccion txtDireccion.Text
                na
.getTelefono txtTelefono.Text
                na
.getEmail txtEmail.Text
                na
.getEstado cmbEstado.SelectedItem

                
If da.InsertarPersona(naThen
                    MessageBox
.Show("Persona Registrada Correctamente""Guardando Datos.."MessageBoxButtons.OKMessageBoxIcon.Information)
                Else
                    
MessageBox.Show("Ya Existe Una Persona Con el Mismo DNI.""Guardando Datos.."MessageBoxButtons.OKMessageBoxIcon.Error)
                
End If
            Catch 
ex As Exception
                MsgBox
(ex.Message)
            
End Try
        Else
            
MessageBox.Show("Faltan Datos Para Ingresar""Guardando Datos.."MessageBoxButtons.OKMessageBoxIcon.Error)
        
End If 
Espero que me digan porque razón cuando introduzco un DNI repetido no me muestra el mensaje que ese DNI ya se encuentra registrado, pero eso sí, si introduzco un DNI repetido no inserta a la base de datos, eso significa que mi procedimiento almacenado está funcionando bien.

Última edición por uagrm; 14/07/2014 a las 14:28
  #2 (permalink)  
Antiguo 15/07/2014, 12:37
 
Fecha de Ingreso: agosto-2010
Mensajes: 126
Antigüedad: 13 años, 8 meses
Puntos: 9
Respuesta: Validar datos repetidos

Bueno, de tanto hacer pruebas a mi código hice algunas modificaciones que ahora me funciona 100%.

La primer modificación lo realice en el procedimiento almacenado.
Código PHP:
Ver original
  1. create procedure InsertarPersona
  2. @Nombres varchar(50),
  3. @Apellidos varchar(50),
  4. @Dni int,
  5. @Direccion varchar(100),
  6. @Telefono int,
  7. @Email varchar(100),
  8. @Estado varchar(30)
  9. as
  10. declare
  11.     @resultado bit
  12.     if exists (select * from tztPersona where Dni = @Dni)
  13.     begin
  14.         set @resultado = 1
  15.     end
  16.     else
  17.         begin
  18.             set @resultado = 0
  19.             insert into tztPersona values (@Nombres, @Apellidos, @Dni, @Direccion, @Telefono, @Email, @Estado)
  20.         end
  21.     select @resultado
  22. go


La segunda modificación lo realice en mi función Insertar
Código PHP:
Ver original
  1. Public Function InsertarPersona(ByVal a As nPersona) As Boolean
  2.         Try
  3.             Conectado()
  4.             cmd = New SqlCommand("InsertarPersona")
  5.             cmd.CommandType = CommandType.StoredProcedure
  6.             cmd.Connection = cnn
  7.  
  8.             cmd.Parameters.AddWithValue("@Nombres", a.getNombres)
  9.             cmd.Parameters.AddWithValue("@Apellidos", a.getApellidos)
  10.             cmd.Parameters.AddWithValue("@Dni", a.getDni)
  11.             cmd.Parameters.AddWithValue("@Direccion", a.getDireccion)
  12.             cmd.Parameters.AddWithValue("@Telefono", a.getTelefono)
  13.             cmd.Parameters.AddWithValue("@Email", a.getEmail)
  14.             cmd.Parameters.AddWithValue("@Estado", a.getEstado)
  15.  
  16.             Dim count As Integer = Convert.ToInt32(cmd.ExecuteScalar)
  17.  
  18.             If count = 0 Then
  19.                 Return True
  20.             Else
  21.                 Return False
  22.             End If
  23.         Catch ex As Exception
  24.             MsgBox(ex.Message)
  25.             Return False
  26.         Finally
  27.             Desconectado()
  28.         End Try
  29.     End Function

En el Boton Guardar no realice ninguna modificación y con esto solucione mi problema.

Etiquetas: repetidos, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:51.