Kiedy czytasz wynik zapytania, używasz pętli, jak wiesz.
While dr.Read
' run this for every row in your resultset
...
End While
While
pętla działa, dopóki nie przeczytasz wszystkich wierszy.
Nie musisz używać pętli. Jeśli chcesz, możesz czytać wiersze pojedynczo, w ten sposób
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
...
Z twojego pytania domyślam się, że masz Textbox1
, Textbox2
, ... Textbox5
w formularzu. Domyślam się też, że masz Grade1
, Grade2
....
Aby obsłużyć zarówno nazwę przedmiotu, jak i ocenę, zmień pierwszy wiersz zapytania na
sql = "SELECT subject_name, grade " & _
Możesz wypełnić te elementy w ten sposób:
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.
To rozwiązuje twój problem. Ale prawdopodobnie zauważyłeś, że jest to absurdalnie powtarzalne. To, czego naprawdę potrzebujesz, to tablica (właściwie dwie tablice) pól tekstowych. Tworzysz, a następnie wypełniasz te pola tekstowe w swoim programie. Nie debugowałem tego:musisz to zrobić.
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
Po uruchomieniu będziesz mieć dwie kolumny kontroli, po jednej dla każdego przedmiotu. Ale ten kod jest złożony i musisz wykonać cały układ swojego formularza za pomocą Something.Y = value
a następnie Y = Y + 50
arytmetyka.
Dlatego istnieje kontrola sieci. Dbają o tego typu rzeczy.