Når du læser en forespørgsels resultatsæt, bruger du som bekendt en løkke.
While dr.Read
' run this for every row in your resultset
...
End While
While
loop fortsætter, indtil du har læst alle rækkerne.
Du behøver ikke bruge en løkke. Hvis du ønsker det, kan du læse rækkerne en ad gangen, sådan her
If dr.Read
' just the first row
End If
If dr.Read
' just the second row
End If
If dr.Read
' just the third row
End If
...
Ud fra dit spørgsmål antager jeg, at du har Textbox1
, Textbox2
, ... Textbox5
på din formular. Jeg gætter også på, at du har Grade1
, Grade2
....
For at håndtere både emnenavn og karakter skal du ændre den første linje i din forespørgsel til
sql = "SELECT subject_name, grade " & _
Du kan udfylde disse elementer som dette:
If dr.Read
TextBox1.Text = dr.Item("subject_name").ToString
Grade1.Text = dr.Item("grade").ToString
End If
If dr.Read
TextBox2.Text = dr.Item("subject_name").ToString
Grade2.Text = dr.Item("grade").ToString
End If
If dr.Read
TextBox3.Text = dr.Item("subject_name").ToString
Grade3.Text = dr.Item("grade").ToString
End If
' more of these sets of four lines to fill your whole form.
Dette løser dit problem. Men du bemærker sikkert, at det er absurd gentaget. Det, du virkelig har brug for, er et array (faktisk to arrays) af tekstbokse. Du opretter og udfylder derefter disse tekstbokse i dit program. Jeg har ikke fejlrettet dette:det skal du gøre.
Dim Subjects As Textbox()
Dim Grades As Textbox()
...
Dim rownumber, Y
rownumber = 0
Y = 200
Dim Subject
Dim Grade
While dr.Read
Subject = New Textbox
Subject.Text = dr.Item("subject_name").ToString
Subject.Width = 200
Subject.Height = 40
Subject.X = 175
Subject.Y = Y
Subjects(rownumber) = Subject
Form.Controls.Add(Subject)
Grade = New Textbox
Grade.Text = dr.Item("grade").ToString
Grade.Width = 50
Grade.Height = 40
Grade.X = 400
Grade.Y = Y
Grades(rownumber) = Grade
Form.Controls.Add(Grade)
rownumber = rownumber + 1
Y = Y + 50
End While
Når dette kører, vil du have to kolonner med kontroller, en for hvert emne. Men denne kode er kompleks, og du skal lave hele layoutet af din formular med Something.Y = value
og derefter Y = Y + 50
aritmetik.
Det er derfor, der findes netkontrol. De tager sig af den slags.