none
Logica de codigo

    Pregunta

  • Hola amigos.

    Tengo un codigo que no veo donde tengo el problema, a ver, que mas de dos ojos ven mejor.

    Tengo dos formularios, Primero y Segundo. Del primero llamo al segundo, ambos tienen grillas, de la grilla del segundo traigo con ENTER, el registro seleccionado hacia la grilla del primero.

    Todo eso lo hace muy bien, el problema es que cuando quiero validar para que no duplique un registro ya existente, se comporta de manera muy extraña.

    1. Solo valida bien cuando hay un solo registro en la grilla del formulario primero.

    2. Si hay mas de un registro en la grilla del primero, ya no valida, duplica los registros.

    He intentado este codigo que pongo de ejemplo de todas maneras y no he llegado a nada. A ver si pueden ver oxido en el engranaje.

     Private Sub SimpleButton3_Click(sender As Object, e As EventArgs) Handles SimpleButton3.Click
            Using loform As New Segundo
                loform.Padre = Me
                loform.ShowDialog()
            End Using
            
            If ItemGlobal.codpro IsNot Nothing Then
              
                For Each row As DataGridViewRow In DataGriDetalles.Rows
    
                    If row.Cells(0).Value = ItemGlobal.codpro Then
                        Dim msg = "Ya tiene este producto en Requisicion." + " " + ItemGlobal.descri.ToUpper
                        Dim title = "Atención!!"
                        Dim style = MsgBoxStyle.Information
                        Dim response = MsgBox(msg, style, title)
    
                    Else
                        DataGriDetalles.Rows.Add(ItemGlobal.codpro, ItemGlobal.descri, ItemGlobal.med, ItemGlobal.pre)
                        Exit For
                    End If
                Next
    
            End If
        End Sub

    Este codigo esta en un boton del formulario Primero.

    Gracias



    • Editado Formulaz5 jueves, 15 de septiembre de 2016 18:57
    jueves, 15 de septiembre de 2016 18:56

Respuestas

  • El problema está en el "Else". Primero miras si la primera fila está duplicada. Y si no lo está, se mete en el "else", que hace un Add y sale del bucle, con lo que nunca llegas a comparar el resto de las filas.

    Te interesa recorrer en el bucle todas las filas. Si una está duplicada, avisas del error y sales del bucle (poniendo un flag que indique que existe un duplicado). Cuando se termine el bucle (detrás el Next) si el flag no está a True, entonces haces el Add.

    jueves, 15 de septiembre de 2016 21:45

Todas las respuestas

  • El problema está en el "Else". Primero miras si la primera fila está duplicada. Y si no lo está, se mete en el "else", que hace un Add y sale del bucle, con lo que nunca llegas a comparar el resto de las filas.

    Te interesa recorrer en el bucle todas las filas. Si una está duplicada, avisas del error y sales del bucle (poniendo un flag que indique que existe un duplicado). Cuando se termine el bucle (detrás el Next) si el flag no está a True, entonces haces el Add.

    jueves, 15 de septiembre de 2016 21:45
  • Muchas gracias Alberto. Quedó a pedir de boca.

    jueves, 15 de septiembre de 2016 23:02