做循环和如果陈述 - 在哪里定位

时间:2012-11-22 12:00:25

标签: vb.net

在我的另一个问题之前,我现在有另一个项目我需要用执行/ 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 标题只出现一次,目前它们在 While 循环内,所以在每一行都循环。任何人都可以就如何做到这一点提出建议吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

假设:

  • 您的存储过程返回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
    

答案 1 :(得分:0)

你可以为h1标题创建另一个if,这样如果你再次打印就打印出来了。它的成本更高,但它可以快速修复。