0

在我的另一个问题之前,我现在有另一个项目需要用我的Do while/if statements来解决。

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标题只出现一次,目前它们在While循环中,所以在每一行上循环。谁能提供有关如何执行此操作的建议?

谢谢!

4

2 回答 2

1

假设:

  • 您的存储过程返回按subject字段排序的项目
  • 你有很多主题= F23和主题= 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 标题创建另一个 if ,这样如果您已经打印过它,就不会再次打印。它有点贵,但它会是一个快速的解决方案。

于 2012-11-22T12:05:11.050 回答