07. september 2009 - 13:25Der er
9 kommentarer og 1 løsning
Udtrække data
Hej Visual Basic .Net
Jeg forsøger vha nedenstående kode at trække alle "[Operations dato] og [Operation type]" udfra "Cpr" og efterfølgende tildele hvert resultat en variabel:
PDato1 for første [Operations dato], P1 for [Operation type] sv. til den dato PDato2 for den følgende [Operations dato], P2 for [Operation type] sv. til den dato osv osv
Dim Connection As New SqlConnection(Conn) Connection.Open() Dim Command As New SqlCommand("SELECT [Operations dato], [Operation type] FROM Kartotek WHERE [Cpr nr] Like '" & Cpr & "%'", Connection) Command.ExecuteNonQuery()
Dim listdato As List(Of DateTime) = New List(Of DateTime) Dim listtype As List(Of Integer) = New List(Of Integer) Dim rdr As SqlDataReader = cmd.ExecuteReader While rdr.Read listdato.Add(CType(rdr(0),DateTime)) listtype.Add(CType(rdr(1),Integer)) End While rdr.Close
Jeg har fået det til at virke ved følgende lidt omstændige metode. Hvis der er forslag til at gøre det lettere/hurtigere/bedre er jeg MEGET lydhør:
Dim Connection As New SqlConnection(Conn) Connection.Open() Dim Command As New SqlCommand("SELECT [Operations dato], [Operation type] FROM Kartotek WHERE [Cpr nr] Like '" & Cpr & "%'", Connection)
Dim PDato1, P1, PDato2, P2, PDato3, P3, PDato4, P4, PDato5, P5, PDato6, P6, PDato7, P7, PDato8, P8, PDato9, P9, PDato10, P10 As String Dim X As Long X = 0 Dim listdato As List(Of DateTime) = New List(Of DateTime) Dim listtype As List(Of String) = New List(Of String) Dim reader As SqlDataReader = Command.ExecuteReader While reader.Read X = X + 1 If X = 1 Then If Not reader.IsDBNull(0) Then PDato1 = reader(0) Else PDato1 = "" End If If Not reader.IsDBNull(1) Then P1 = reader(1) Else P1 = "" End If ElseIf X = 2 Then If Not reader.IsDBNull(0) Then PDato2 = reader(0) Else PDato2 = "" End If If Not reader.IsDBNull(1) Then P2 = reader(1) Else P2 = "" End If ElseIf X = 3 Then If Not reader.IsDBNull(0) Then PDato3 = reader(0) Else PDato3 = "" End If If Not reader.IsDBNull(1) Then P3 = reader(1) Else P3 = "" End If ElseIf X = 4 Then If Not reader.IsDBNull(0) Then PDato4 = reader(0) Else PDato4 = "" End If If Not reader.IsDBNull(1) Then P4 = reader(1) Else P4 = "" End If ElseIf X = 5 Then If Not reader.IsDBNull(0) Then PDato5 = reader(0) Else PDato5 = "" End If If Not reader.IsDBNull(1) Then P5 = reader(1) Else P5 = "" End If ElseIf X = 6 Then If Not reader.IsDBNull(0) Then PDato6 = reader(0) Else PDato6 = "" End If If Not reader.IsDBNull(1) Then P6 = reader(1) Else P6 = "" End If ElseIf X = 7 Then If Not reader.IsDBNull(0) Then PDato7 = reader(0) Else PDato7 = "" End If If Not reader.IsDBNull(1) Then P7 = reader(1) Else P7 = "" End If ElseIf X = 8 Then If Not reader.IsDBNull(0) Then PDato8 = reader(0) Else PDato8 = "" End If If Not reader.IsDBNull(1) Then P8 = reader(1) Else P8 = "" End If ElseIf X = 9 Then If Not reader.IsDBNull(0) Then PDato9 = reader(0) Else PDato9 = "" End If If Not reader.IsDBNull(1) Then P9 = reader(1) Else P9 = "" End If ElseIf X = 10 Then If Not reader.IsDBNull(0) Then PDato10 = reader(0) Else PDato10 = "" End If If Not reader.IsDBNull(1) Then P10 = reader(1) Else P10 = "" End If End If End While reader.Close()
Du kunne droppe while løkken og kalde reader.Read i 10 if sætninger.
Men jeg mener stadig at konceptet med 10 variable med et tal suffix er forkert - du bør bruge array eller List og så indexere ind i det når du skal bruge værdierne.
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.