Avatar billede steensommer Praktikant
23. november 2011 - 09:58 Der er 1 kommentar og
1 løsning

Problem med Arraylist

Hej

Her er først del af et sub der skal checke om feltet ID i tabellen ToDo indholder tallene 1,2 ...15 og hvis ikke skal tallet indsættes.
Af en eller anden grund medtages ALDRIG det første felt (tallet 1). Da jeg så fjernede "primær Key" fra feltet i ToDo kom der efterfølgende 2 felter med tallet 1 men herefter fungerer programmeringen :-O

        Dim Connection As New SqlConnection(Conn)
        Connection.Open()
        Dim IDListe As New ArrayList

        Try
            Dim CMD As New SqlCommand("SELECT ID FROM ToDo", Connection)
            Dim reader As SqlDataReader = CMD.ExecuteReader()
            Dim ID As Int32
            If reader.Read Then
                While reader.Read
                    'Liste der indeholder alle ID'er i databasen ToDo
                    ID = reader.GetInt32(0)
                    MessageBox.Show(ID)
                    IDListe.Add(ID)
                End While
                reader.Close()
                Dim X As Integer
                For X = 1 To 15
                    If IDListe.Contains(X) = False Then

                        CMD = New SqlCommand("INSERT INTO ToDo (ID) VALUES (@ID)", Connection)
                        With CMD
                            .Parameters.Add("@ID", SqlDbType.Int)
                            .Parameters("@ID").Value = X
                            .ExecuteNonQuery()
                        End With
                    End If
                Next
Avatar billede steensommer Praktikant
23. november 2011 - 10:00 #1
...og hvis jeg laver en IDliste.count finder den et tal mindre end det aktuelle (den medregner ikke det første felt)
Avatar billede steensommer Praktikant
23. november 2011 - 11:07 #2
Jeg forstår IKKE hvorfor men denne ændring har løst problemet (næppe elegant):


        Dim Connection As New SqlConnection(Conn)
        Connection.Open()
        Dim IDListe As New ArrayList

        Try
            Dim CMD As New SqlCommand("SELECT ID FROM ToDo", Connection)
            Dim reader As SqlDataReader = CMD.ExecuteReader()
            If reader.Read Then
                IDListe.Add(reader.GetInt32(0))
                While reader.Read
                    'Liste der indeholder alle ID'er i databasen ToDo
                    Dim y As Integer = 0
                    IDListe.Add(reader.GetInt32(0))
                    y = y + 1
                End While
                reader.Close()
                Dim X As Integer
                For X = 1 To 15
                    If IDListe.Contains(X) = False Then

                        CMD = New SqlCommand("INSERT INTO ToDo (ID) VALUES (@ID)", Connection)
                        With CMD
                            .Parameters.Add("@ID", SqlDbType.Int)
                            .Parameters("@ID").Value = X
                            .ExecuteNonQuery()
                        End With
                    End If
                Next
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester