sql >> データベース >  >> Database Tools >> phpMyAdmin

特定のIDに属するすべての行を選択して表示します

    クエリの結果セットを読み取るときは、ご存知のようにループを使用します。

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

    While すべての行を読み取るまで、ループは続行されます。

    ループを使用する必要はありません。必要に応じて、次のように一度に1行ずつ読み取ることができます

     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.
    

    これはあなたの問題を解決します。しかし、あなたはおそらくそれがばかげて繰り返されていることに気付くでしょう。本当に必要なのは、テキストボックスの配列(実際には2つの配列)です。プログラムでこれらのtexboxを作成し、入力します。 私はこれをデバッグしていません:それはあなたがするためです。

      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
    

    これを実行すると、サブジェクトごとに1つずつ、2列のコントロールが表示されます。ただし、このコードは複雑であり、フォームのすべてのレイアウトをSomething.Y = valueで行う必要があります。 次に、Y = Y + 50 算術。

    そのため、グリッドコントロールが存在します。彼らはそのようなことを世話します。



    1. Microsoft SSMS構文が単語構成を強調するのはなぜですか?

    2. ユーザー「IISAPPPOOL\AppName」が「SSASCubeName」データベースにアクセスできないか、データベースが存在しません

    3. SQL Server 2012:ログインSAを変更できません

    4. SQLで同じテーブルの2つの連続する行間の時間差を見つけます