0

他の質問の前に、 Do while/if ステートメントで解決する必要がある別の項目があります。

strSQL = "exec sp_CoursesStartingSoon"
    objConn = New SqlConnection(strConnection)
    objConn.Open()
    objCmd = New SqlCommand(strSQL, objConn)
    rsData = objCmd.ExecuteReader(0)

    While rsData.Read()

        If (rsData("subject") = "F23") Then

            html += "<h1>Access to HE</h1>"
            html += "<p>" & rsData("name") & "</p>"
            html += "<p>" & rsData("level") & "</p>"

        ElseIf (rsData("subject") = "F06") Then

            html += "<h1>Art and Design</h1>"
            html += "<p>" & rsData("name") & "</p>"
            html += "<p>" & rsData("level") & "</p>"

        End If

    End While

今私が抱えている問題は、H1タイトルを 1 回だけ表示する必要があることです。現在、それらはWhileループ内にあるため、すべての行でループしています。誰でもこれを行う方法について提案できますか?

ありがとう!

4

2 に答える 2

1

仮定:

  • ストアドプロシージャは、subjectフィールド順に並べられたアイテムを返します
  • そして、subject=F23とsubject=F06のアイテムがたくさんあります
  • 件名ごとにグループ化された同じアイテムのリストを作成する必要があります

    Dim titleF23 as String = "<h1>Access to HE</h1>"
    Dim titleF06 as String = "<h1>Art and Design</h1>"
    
    While rsData.Read()
    
        If (rsData("subject") = "F23") Then
            if titleF23.Length > 0 then 
                 html += titleF23
                 titleF23 = ""
            end if
            html += "<p>" & rsData("name") & "</p>"
            html += "<p>" & rsData("level") & "</p>"
    
        ElseIf (rsData("subject") = "F06") Then
            if titleF06.Length > 0 then 
                 html += titleF06
                 titleF06 = ""
            end if
            html += "<p>" & rsData("name") & "</p>"
            html += "<p>" & rsData("level") & "</p>"
        End If
    
     End While
    
于 2012-11-22T12:04:54.743 に答える
0

h1タイトルの場合は別のタイトルを作成して、一度印刷した場合は再度印刷しないようにすることができます。少しコストがかかりますが、すぐに修正できます。

于 2012-11-22T12:05:11.050 に答える