23. november 2011 - 09:58Der 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
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
Synes godt om
Ny brugerNybegynder
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.