Lorsque vous lisez le jeu de résultats d'une requête, vous utilisez une boucle comme vous le savez.
While dr.Read
' run this for every row in your resultset
...
End While
Le While
boucle continue jusqu'à ce que vous ayez lu toutes les lignes.
Vous n'êtes pas obligé d'utiliser une boucle. Si vous le souhaitez, vous pouvez lire les lignes une par une, comme ceci
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
...
D'après votre question, je suppose que vous avez Textbox1
, Textbox2
, ... Textbox5
sur votre formulaire. Je suppose aussi que vous avez Grade1
, Grade2
....
Pour gérer à la fois le nom du sujet et la note, remplacez la première ligne de votre requête par
sql = "SELECT subject_name, grade " & _
Vous pouvez remplir ces éléments comme ceci :
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.
Cela résout votre problème. Mais vous remarquerez probablement que c'est absurdement répétitif. Ce dont vous avez vraiment besoin est un tableau (en fait deux tableaux) de zones de texte. Vous créez, puis remplissez ces zones de texte dans votre programme. Je n'ai pas débogué ceci :c'est à vous de le faire.
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
Lorsque cela s'exécute, vous aurez deux colonnes de contrôles, une pour chaque sujet. Mais ce code est complexe, et vous devez faire toute la mise en page de votre formulaire avec Something.Y = value
puis Y = Y + 50
arithmétique.
C'est pourquoi les contrôles de grille existent. Ils s'occupent de ce genre de choses.