phpMyAdmin
 sql >> база данни >  >> Database Tools >> phpMyAdmin

Изберете и покажете всички редове, принадлежащи на конкретен идентификатор

Когато четете набора от резултати на заявка, вие използвате цикъл, както знаете.

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

While цикълът продължава, докато не прочетете всички редове.

Не е нужно да използвате цикъл. Ако желаете, можете да четете редовете един по един, така

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

От въпроса ви предполагам, че имате Textbox1 , Textbox2 , ... Textbox5 на вашия формуляр. Предполагам също, че имате Grade1 , Grade2 ....

За да се справите и с името на предмета, и с оценката, променете първия ред на вашата заявка на

   sql = "SELECT subject_name, grade " & _

Можете да попълните тези елементи по следния начин:

 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.

Това решава проблема ви. Но вероятно забелязвате, че се повтаря абсурдно. Това, от което наистина се нуждаете, е масив (всъщност два масива) от текстови полета. Вие създавате и след това попълвате тези текстови полета във вашата програма. Не съм отстранил грешките в това:това е за вас.

  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

Когато това се изпълнява, ще имате две колони с контроли, по една за всеки предмет. Но този код е сложен и трябва да направите цялото оформление на формуляра си с Something.Y = value и след това Y = Y + 50 аритметика.

Ето защо съществуват контроли на мрежата. Те се грижат за такива неща.



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Низът за избор на SQL не работи

  2. Стойността на isset винаги връща 1

  3. Как да инсталирате и защитите phpMyAdmin на Ubuntu 16.04

  4. phpMyAdmin - конфигурация config.inc.php?

  5. Грешка при изтриване на база данни в MySQL (не може да се rmdir '.\oro', errno:41)