none
Duplicados en Collection

    Pregunta

  • Buenas a todos, estoy realizando una pequeña aplicación, que lo que muestra es una lectura de una base de datos sobre unas fechas.

    El problema es que el collection que me crea, tiene fechas repetidas y me gustaría dejarlo sin repeticiones.

    El código que tengo hasta ahora es este:

    'Declaramos el array que contendrá las fechas y el temporal para comprobar
            Dim array_fechas As New Collection
            Dim array_fechas_temporal As New Collection
    'Creo la booleana de comparación.
            Dim comprueba As Boolean

    'Conexión hecha previamente a la base de datos:

    'comprobamos si lector.read sigue pudiendo leer(vamos, que si hay más filas), si no las hay, ya no hay registros hacia la derecha, y debemos deshabilitar el botón de siguiente.

                Do While dbreader.Read()

    'Meto en el array_fechas todas las fechas posibles que hay en la base de datos

                   array_fechas.Add(dbreader(0).ToString)
                Loop

     'Ahora lo que hago es comprobar uno a uno los registros de array_fechas y procedemos a eliminar el que sea igual.

    'Como tendrá valor 0, aquí no hay dudas de que el primer registro del array original lo inserto en el tempora.

               If array_fechas_temporal.Count = 0 Then
                    array_fechas_temporal.Add(array_fechas(1))
                Else

                End If

                'recorremos el temporal

    'Aquí es donde tengo los problemas, recorro un array, pero no consigo recorrer bien el segundo para ir comparándolo e introducir 'sólo el que no esté repetido.

                For i = 1 To array_fechas.Count
                    For w = 1 To array_fechas_temporal.Count
                        If array_fechas.Item(i) = array_fechas_temporal(w) Then
                            comprueba = True
                            Exit For
                        Else
                            comprueba = False
                        End If
                        array_fechas_temporal.Add(array_fechas(i))
                    Next

                Next

    Gracias por la ayuda.,

    jueves, 27 de abril de 2017 22:58

Respuestas

  • Estás comprobando si existe el elemento en array_fechas_temporal pero luego no aplicas esa comprobación. Además estás añadiendo el mismo item cada vez con mayor repetición. 

    For i = 1 To array_fechas.Count
        comprueba = False
        For w = 1 To array_fechas_temporal.Count
            If array_fechas.Item(i) = array_fechas_temporal(w) Then
                comprueba = True
                Exit For
            End If
        Next

        if not comprueba then
            array_fechas_temporal.Add(array_fechas(i))
        end if
    Next


    Saludos, Javier J

    viernes, 28 de abril de 2017 7:28

Todas las respuestas

  • Estás comprobando si existe el elemento en array_fechas_temporal pero luego no aplicas esa comprobación. Además estás añadiendo el mismo item cada vez con mayor repetición. 

    For i = 1 To array_fechas.Count
        comprueba = False
        For w = 1 To array_fechas_temporal.Count
            If array_fechas.Item(i) = array_fechas_temporal(w) Then
                comprueba = True
                Exit For
            End If
        Next

        if not comprueba then
            array_fechas_temporal.Add(array_fechas(i))
        end if
    Next


    Saludos, Javier J

    viernes, 28 de abril de 2017 7:28
  • Un millón de gracias, me estaba volviendo loco y emperrado en que debería funcionarme, no había caído.

    ¡¡Gracias de nuevo!!

    lunes, 1 de mayo de 2017 10:44