sql >> Base de Datos >  >> Database Tools >> phpMyAdmin

Seleccione y muestre todas las filas que pertenecen a una ID específica

Cuando lee el conjunto de resultados de una consulta, usa un bucle como sabe.

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

El While el ciclo continúa hasta que haya leído todas las filas.

No tienes que usar un bucle. Si lo desea, puede leer las filas de una en una, así

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

Por tu pregunta, supongo que tienes Textbox1 , Textbox2 , ... Textbox5 en tu formulario. También supongo que tienes Grade1 , Grade2 ....

Para manejar tanto el nombre del sujeto como la calificación, cambie la primera línea de su consulta a

   sql = "SELECT subject_name, grade " & _

Puede completar esos elementos de esta manera:

 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.

Esto resuelve tu problema. Pero probablemente notarás que es absurdamente repetitivo. Lo que realmente necesita es una matriz (en realidad, dos matrices) de cuadros de texto. Usted crea y luego completa estos cuadros de texto en su programa. No he depurado esto:eso es para que lo hagas tú.

  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

Cuando esto se ejecute, tendrá dos columnas de controles, una para cada tema. Pero este código es complejo y tienes que hacer todo el diseño de tu formulario con Something.Y = value y luego Y = Y + 50 aritmética.

Es por eso que existen controles de red. Ellos se encargan de ese tipo de cosas.