Visual Basic.NET - Evitar duplicar registros

 
Vista:
sin imagen de perfil

Evitar duplicar registros

Publicado por jose antonio (21 intervenciones) el 26/03/2016 19:30:32
Buenas a todos en la realizacion de mi proyecto estoy en el punto que desde un formulario tengo dos datagridview, Dgv_cursos y Dgv_asisten, el primero lo cargo con los datos de una bd y el otro atraves del evento CellMouseDoubleClick desde el primero he probado de diferentes formas y a parte de los errores que saltan no se por donde agarrarlo

el codigo con el que paso las filas de uno a otros es este
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim coleccion As DataGridViewSelectedRowCollection = dgv_cursos.SelectedRows
 
   For Each fila As DataGridViewRow In coleccion
 
            Dim dni, apellidos, nombre, grados As String
 
            dni = dgv_cursos(0, fila.Index).Value
 
            apellidos = dgv_cursos(1, fila.Index).Value
 
            nombre = dgv_cursos(2, fila.Index).Value
 
            grados = dgv_cursos(3, fila.Index).Value
 
            dgv_asisten.Rows.Add(dni, apellidos, nombre, grados)
 
        Next
claro esta, que hago dobleclik varias veces en el mismo, me pasa tantan filas como veces hago click
estoy trabajando para encontrar la forma de hacer que no me deje reperir la misma fila filtrada por el dni,
pero ya no se como seguir he probado de todo
como el condicional

1
2
3
4
5
if dni  = dgv_asisten(0, fila.Index).Value then
MsgBox("las fila repetida" )
else
dgv_asisten.Rows.Add(dni, apellidos, nombre, grados)
endif

dentro del bucle for each
pero nada de nada error:
Debe ser un valor no negativo e inferior al tamaño de la colección. Nombre del parámetro: index
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Javier
Val: 150
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Evitar duplicar registros

Publicado por Javier (77 intervenciones) el 27/03/2016 07:48:59
Si el dni de tu primer grid no se repite nunca, lo que puedes hacer es al momento del dobleclick hacer un recorrido por tu segundo grid y buscar el dni, si aparece mandas el mensaje de error o de que ya esta agregado, si no aparece haces el Row.Add.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Evitar duplicar registros

Publicado por jose antonio (21 intervenciones) el 27/03/2016 15:14:08
muchas gracias por la inspiracion la verdad que estaba bloqueado jojo pero ahora ya esta funcionando mil gracias
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim coleccion As DataGridViewSelectedRowCollection = dgv_cursos.SelectedRows
        Dim dni, apellidos, nombre, grados As String
        Dim insertar As String = "SI"
 
        For Each FILA1 As DataGridViewRow In dgv_asisten.Rows
 
            If FILA1.Cells(0).Value = dgv_cursos.CurrentCell.Value Then
                insertar = "NO"
                MsgBox("Este dato ya fue agregado.")
                Exit For
            End If
 
        Next
        If insertar = "SI" Then
            contador = contador + 1
            Label5.Text = contador
            For Each fila As DataGridViewRow In coleccion
                dni = dgv_cursos(0, fila.Index).Value
                apellidos = dgv_cursos(1, fila.Index).Value
                nombre = dgv_cursos(2, fila.Index).Value
                grados = dgv_cursos(3, fila.Index).Value
                dgv_asisten.Rows.Add(dni, apellidos, nombre, grados)
            Next
        End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar