Когда вы читаете набор результатов запроса, вы используете цикл, как вы знаете.
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
арифметики.
Вот почему существуют элементы управления сеткой. Они заботятся о подобных вещах.