Когато четете набора от резултати на заявка, вие използвате цикъл, както знаете.
While dr.Read
' run this for every row in your resultset
...
End While
While
цикълът продължава, докато не прочетете всички редове.
Не е нужно да използвате цикъл. Ако желаете, можете да четете редовете един по един, така
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
...
От въпроса ви предполагам, че имате Textbox1
, Textbox2
, ... Textbox5
на вашия формуляр. Предполагам също, че имате Grade1
, Grade2
....
За да се справите и с името на предмета, и с оценката, променете първия ред на вашата заявка на
sql = "SELECT subject_name, grade " & _
Можете да попълните тези елементи по следния начин:
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.
Това решава проблема ви. Но вероятно забелязвате, че се повтаря абсурдно. Това, от което наистина се нуждаете, е масив (всъщност два масива) от текстови полета. Вие създавате и след това попълвате тези текстови полета във вашата програма. Не съм отстранил грешките в това:това е за вас.
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
Когато това се изпълнява, ще имате две колони с контроли, по една за всеки предмет. Но този код е сложен и трябва да направите цялото оформление на формуляра си с Something.Y = value
и след това Y = Y + 50
аритметика.
Ето защо съществуват контроли на мрежата. Те се грижат за такива неща.