phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

Sélectionner et afficher toutes les lignes appartenant à un ID spécifique

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.