Ao ler o conjunto de resultados de uma consulta, você usa um loop como sabe.
While dr.Read
' run this for every row in your resultset
...
End While
O
While
loop continua até que você tenha lido todas as linhas. Você não precisa usar um loop. Se desejar, você pode ler as linhas uma de cada vez, assim
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
...
Pela sua pergunta, acho que você tem
Textbox1
, Textbox2
, ... Textbox5
em seu formulário. Eu também acho que você tem Grade1
, Grade2
.... Para lidar com o nome da disciplina e a nota, altere a primeira linha da sua consulta para
sql = "SELECT subject_name, grade " & _
Você pode preencher esses itens assim:
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.
Isso resolve seu problema. Mas você provavelmente percebe que é absurdamente repetitivo. O que você realmente precisa é de um array (na verdade, dois arrays) de caixas de texto. Você cria e preenche essas caixas de texto em seu programa. Eu não depurei isso:isso é para você.
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
Quando isso for executado, você terá duas colunas de controles, uma para cada assunto. Mas este código é complexo, e você tem que fazer todo o layout do seu formulário com
Something.Y = value
e então Y = Y + 50
aritmética. É por isso que os controles de grade existem. Eles cuidam desse tipo de coisa.