phpMyAdmin
 sql >> Database >  >> Database Tools >> phpMyAdmin

Seleziona e visualizza tutte le righe appartenenti a un ID specifico

Quando leggi il set di risultati di una query, usi un ciclo come sai.

While dr.Read
    ' run this for every row in your resultset 
    ...
End While

Il While il ciclo continua finché non hai letto tutte le righe.

Non è necessario utilizzare un loop. Se lo desideri puoi leggere le righe una alla volta, in questo modo

 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
 ...

Dalla tua domanda suppongo che tu abbia Textbox1 , Textbox2 , ... Textbox5 sul tuo modulo. Immagino che tu abbia anche Grade1 , Grade2 ....

Per gestire sia il nome della materia che il voto, cambia la prima riga della tua query in

   sql = "SELECT subject_name, grade " & _

Puoi popolare questi elementi in questo modo:

 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.

Questo risolve il tuo problema. Ma probabilmente noterai che è assurdamente ripetitivo. Ciò di cui hai veramente bisogno è un array (in realtà due array) di caselle di testo. Crei e poi riempi queste texbox nel tuo programma. Non ho eseguito il debug di questo:è per te farlo.

  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 viene eseguito, avrai due colonne di controlli, una per ogni argomento. Ma questo codice è complesso e devi fare tutto il layout del tuo modulo con Something.Y = value e poi Y = Y + 50 aritmetica.

Ecco perché esistono i controlli della griglia. Si occupano di questo genere di cose.