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

Välj och visa alla rader som tillhör ett specifikt ID

När du läser en frågas resultatuppsättning använder du som du vet en loop.

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

While loop fortsätter tills du har läst alla rader.

Du behöver inte använda en slinga. Om du vill kan du läsa raderna en i taget, så här

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

Från din fråga antar jag att du har Textbox1 , Textbox2 , ... Textbox5 på ditt formulär. Jag antar också att du har Grade1 , Grade2 ....

För att hantera både ämnesnamn och betyg, ändra den första raden i din fråga till

   sql = "SELECT subject_name, grade " & _

Du kan fylla i dessa objekt så här:

 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.

Detta löser ditt problem. Men du märker förmodligen att det är absurt repetitivt. Vad du verkligen behöver är en array (faktiskt två arrayer) av textrutor. Du skapar, och fyller sedan i, dessa textrutor i ditt program. Jag har inte felsökt detta:det är för dig att göra det.

  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

När detta körs kommer du att ha två kolumner med kontroller, en för varje ämne. Men den här koden är komplex, och du måste göra all layout av ditt formulär med Something.Y = value och sedan Y = Y + 50 aritmetisk.

Det är därför rutnätskontroller finns. De tar hand om sånt.



  1. Hur man kräver SSL för alla fjärranvändare

  2. SQL-anslutning till localhost

  3. Konvertera kolumn från datum till datumtid

  4. [Docker]:Att ansluta PHPMyAdmin till MySQL fungerar inte